Java 多态,向上造型

来源:互联网 发布:甲方乙方影评知乎 编辑:程序博客网 时间:2024/04/28 12:51

首先我们来定义四个类, 分别是动物类、猫类、狗类、动物信息类,  猫类和动物类都继承了动物类,并且都有自己单独的属性。但是在动物信息类中我们定义了一个是动物类的ArrayList,每次new进去的是猫或者狗而不是animal的对象,但系统知道这是什么,,就是说我一各动物列表,里面可以方任何动物,我也可以管理任何动物,当然是需要重写父类方法的,不然要报错,任何动物的属性都在这里得到保留。

Java的多态变量:

1 Java的对象变量是多态的,他们能保存不止一种类型对象

2 它可以保存申明类型的变量,或申明类型的子类的对象

3 把子类的对象赋到父类的变量的时候就发生了向上造型

多态条件: 

1,有继承的存在。
2,子类重写父类方法。
3,父类引用指向子类对象。
动物类:
package DuoTai;public class Animal {private String name;private int sex;public void voice(){System.out.println("普通动物叫声");}public Animal(String name, int sex) {super();this.name = name;this.sex = sex;}}
猫类:
package DuoTai;public class Cat extends Animal{private String maojiao;public void voice(){System.out.println("喵喵喵");}public Cat(String name, int sex, String maojiao) {super(name, sex);this.maojiao = maojiao;}}
狗类:
package DuoTai;public class dog extends Animal{public dog(String name, int sex, String jiao) {super(name, sex);this.jiao = jiao;}public void voice(){System.out.println("汪汪汪"+jiao);}private String jiao ;}
动物信息类:
package DuoTai;import java.util.ArrayList;public class DataAnimal {private ArrayList<Animal> animal = new ArrayList<Animal>();public void add(Animal a){animal.add(a);}public void list(){for(Animal a : animal){a.voice();}}public static void main(String[] args) {dog d = new dog("白狗",1,"汪汪汪");Cat c = new Cat("黄猫",0,"喵喵喵");add(d);add(c);list();}}
话说,多态的单词是:polymorphism 

原创粉丝点击