通过父类的引用,调用子类的方法
对象名.方法名();
当使用 父类引用 调用方法时,如果父类有该方法,而 子类没有,就调用父类的方法
例子:
class Wangjianlin{
public void money(){
System.out.println("王健林赚钱");
}
}
class Wangsicong extends Wangjianlin{
}
测试:
Wangjianlin wang = new Wangsicong();
wang.money();
执行结果:
王健林赚钱
当使用 父类引用 调用方法时,如果 子类重写父类的方法,就调用子类的方法
class Wangjianlin{
public void money(){
System.out.println("王健林赚钱");
}
}
class Wangsicong extends Wangjianlin{
public void money(){
System.out.println("王思聪赚钱");
}
}
测试:
Wangjianlin wang = new Wangsicong();
wang.money();
执行结果:
王思聪赚钱
当使用 父类引用 调用方法时,如果子类有该方法,父类没有,则调用报错
class Wangjianlin{
public void money(){
System.out.println("王健林赚钱");
}
}
class Wangsicong extends Wangjianlin{
public void money(){
System.out.println("王思聪赚钱");
}
public void buy(){
System.out.println("王思聪买买买");
}
}
测试:
Wangjianlin wang = new Wangsicong();
//wang.buy();//报错,不能向下查找
喂养宠物例子
例子:
class abstract Animal{
public void eat();
}
class Dog extends Animal{
public void eat(){
System.out.println("Dog 吃饭");
}
}
class Cat extends Animal{
public void eat(){
System.out.println("Cat 吃饭");
}
}
测试
public class Test {
public static void feed(Cat a){
a.eat();
}
public static void feed(Dog a){
a.eat();
}
public static void main(String[] args) {
Cat tom=new Cat();
feed(tom);
Dog erha=new Dog();
feed(erha);
}
}
多态的好处
实际开发的过程中,父类类型作为方法形参,传递子类对象给方法,进行方法的调用
class Test{
//喂食,此处就用到了多态。否则定义了Dog,那么Cat对象无法传递,反之亦然
public static void feed(Animal a){
System.out.println("Person 喂食");
a.eat();
}
public static void main(String[] args) {
Cat tom=new Cat();
feed(tom);
Dog erha=new Dog();
feed(erha);
}
}
feed()方法形参,就用到了多态。如果定义了Dog,那么Cat对象无法传递,反之亦然