java中的多态
普鲁登斯 2020-02-16 07:14:24 多态发生在继承关系中
你可以把多态中的父类称为对象的属性设计图
以下所有列子
Cat extends Animal
Dog extends Animal
向上转型
Animal animal=new Cat(); //把子类的对象赋给父类的引用(式子从后往前理解)
向下转型(就是向上转型的翻过来)
animal //这是上面的那个子类对象的父类引用
Cat cat=(Cat)Animal(); //把子类对象的父类引用赋给子类(还需要把子类对象的父类引用强转为要赋值的那个子类的类,不然报错)称之为向下转型
看到这里有人就会问,
转来转去有什么用
还不如一个类一个对象的Cat cat=new Cat();好
下面我给你讲这种多态的做法有什么用
其作用主要为:
实现对象批量创建时,对象们对父类属性的公用化和对子类方法使用的独特化
实现对象批量创建时,对象们(利用多态创建出来的多个对象)对父类属性(一般情况下我们共用的这个父类属性没有赋值的)的公用化和对子类方法使用的独特化
看不懂语言解释就看例子
例子:
设定:下面的Cat Dog都是继承于Animal的
class Animal{
String name;
}
class Cat{
public void eat(){
Syso…("我吃鱼");
}
}
class Dog{
public void eat(){
Syso…("我吃s");
}
}
main主方法中:
Animal animal1=new Dog();
Syso…(animal1.name="我是狗");
animal1.eat();
animal animal2=new Cat();
Syso…(animal2.name="我是猫");
animal2.eat();
输出:
我是狗
我吃s
我是猫
我吃鱼
这就是多态
狗和猫公用了父类animal中的String name这个name属性;
还都使用了自己独特的方法eat