- |——多态的转型:
- 向上转型:限定功能使用,提高扩展性
- Animal a = new cat();//自动类型提升
-
- abstract class Animal{
- abstract void eat();
- }
-
- class Cat extends Animal{
- public void eat(){
- System.out.println("猫吃鱼");
- }
- public void catchMouse(){
- System.out.println("猫抓老鼠");
- }
-
- }
- //一旦完成了这个自动转型,就不能访问特有的行为
- //上边的 对象 a 就不能访问cat 类里边没有从Animal里边继承来的catchMouse方法
-
- |--向下转型:这样是为了调用特有的方法。
- Cat c = (Cat)a;
- 注-->注-->抽象类可以实例化
-
- 总的来说:
- 如果子类继承父类后,没有对方法进行覆盖,那么自动转型后是可以使用父类中的方法。
- 如果子类方法将父类方法覆盖了,那么调用的就是子类中地方法。
- 但是,如果父类本来就没有这个方法。转型后,硬要调用这个方法,编译失败。
-
- abstract class Animal{
- abstract void eat();
-
- void sleep(){
- System.out.println("Sleep");
- }
- }
- class Cat extends Animal{
- public void eat(){
- System.out.println("eat fish");
- }
-
- public void catchMouse(){
- System.out.println("catchmouse");
- }
- }
- public class Test{
- public static void main(String []args){
- Animal a = new Cat();
- a.sleep();
- // a.catchMouse();直接编译失败
- }
- }
复制代码 虽然看起来你只是来争取技术分的。但是还是给予支持吧!加油 |