JAVA基础 -从父类的引用如何调用子类中独有的方法

首先放上源文件

父类  Animal.java

package com.imooc;

public class Animal {
    public void eat(){            //注意这个eat方法
     System.out.println("动物具有吃的能力");
    }
}
子类  Dog.java
package com.imooc;

public class Dog extends Animal {
    public void eat(){           //重写父类的eat方法
     System.out.println("狗是吃肉的");
    }
    public void watchDoor(){    //子类中独有的方法,思考如何调用它呢?
     System.out.println("狗具有看门的能力");
    }
}
子类  Cat.java   // 直接继承父类文件,没有任何修改代码的操作
package com.imooc;

public class Cat extends Animal {

}
主函数  Initial.java

public class Initial {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
        Animal animal1 = new Animal();//animal1  /2/3都是引用,引用指向的是本类或者子类对象
        Animal animal2 = new Dog();//父类的引用是可以指向子类的对象的
        Animal animal3 = new Cat();
        animal1.eat();      //animal1是创建的父类本身的对象,所以其执行的是父类下的eat方法
        animal2.eat();      //animal2是创建的子类的对象,所以其执行的是Dog类下重写的eat方法
        animal3.eat();      //animal3是创建的子类的对象,所以其执行的是Cat类下的继承于Animal的eat方法
        //animal2.watchDoor();    这个代码是错误的,父类的引用不能直接调用子类的方法
         Dog dog = (Dog)animal2;  //将父类引用强制转换成子类,功能变强大了
        dog.watchDoor();   // 可以执行子类独有的方法
}
}
运行结果:
动物具有吃的能力
狗是吃肉的
动物具有吃的能力
狗具有看门的能力



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值