1、多态的定义:对象的多种形态(引用多态,方法多态)(使用多态时候一定要用到继承)
2、引用多态:父类的引用(对象)既可以指向本类的对象,也可以指向子类的对象。
为什么叫对象叫引用呢?其实对象名只是代表对象在这块内存的地址,通过对象名间接处理对象,所以对象名是一个引用。
3、方法多态:在创建本类对象时,调用的方法为本类方法
在创建子类对象时,调用的方法为子类重写的方法或者继承的方法
4、多态举例:
父类;Animal
package com.iooco;
public class Animal {
public void eat(){
System.out.println("动物具有吃的能力");
}
}
子类Dog和Cat
package com.iooco;
public class Dog extends Animal {
public void eat(){
System.out.println("狗是吃肉的");
}
public void watchDoor() {
System.out.println("狗是可以看们的");
}
}
package com.iooco;
public class Cat extends Animal {
}
测试类:
package com.iooco;
public class Inital {
public static void main(String[] args) {
// TODO Auto-generated method stub
Animal obj1=new Animal();
Animal obj2=new Dog();//父类的引用可以指向子类
Animal obj3=new Cat();
//Dog dog=new Animal();子类的引用不可以指向父类
obj1.eat();
obj2.eat();
obj3.eat();
//obj2.watchDoor();
}
}
从测试类可以看出来,obj1.eat()就是调用本类的方法,obj2.eat()就是重写父类的方法,obj3.eat()就是直接继承父类的方法,因为Cat中没有自己定义eat方法,所以直接继承父类的。
注意,要是子类独有的方法,比如watchDoor也不可以利用“利用父类的引用指向子类的”这种创建对象的放来来调用方法。