zoukankan      html  css  js  c++  java
  • 多态

    多态需要满足三个条件:

    1、继承。

    2、重写。

    3、父类数据类型的引用指向子类对象。

        
        public void sleep(){
            System.out.println("动物在睡觉");
        }
        
        public void eat(){
            System.out.println("动物在吃饭");
        }
        
        public void walk(){
            System.out.println("动物在走路");
        }
        
        public void walk1(){
            System.out.println("动物在走路");
        }
    }
    
    class UserAction extends BaseAction{
        
        public void sleep(){
            System.out.println("猫在睡觉");
        }
        
        public void eat(){
            System.out.println("猫在吃饭");
        }
        
        public void walk(){
            System.out.println("猫在走路");
        }
        
        public void drinking(){
            System.out.println("猫在喝水");
        }
    }
    
    class Main{
        
        public static void main(String[] args){
            BaseAction b = new UserAction();
            b.sleep();
            b.eat();
            b.walk();
            //b.drinking();//注释掉,编译报错
        }
    }

    运行结果:

    猫在睡觉
    猫在吃饭
    猫在走路

    从代码中可以看出,多态存在弊端,就是不能使用子类特有的属性和方法,在Main类中使用UserAction中的drinking()方法时会编译报错。

    如果一定要使用UserAction中的drinking()方法,可以使用使BaseAction强制变回UserAction类型即可。

        
        public static void main(String[] args){
            BaseAction b = new UserAction();
            b.sleep();
            b.eat();
            b.walk();
            UserAction u = (UserAction)b;
            u.drinking();
        }
    }

    运行结果:

    猫在睡觉
    猫在吃饭
    猫在走路
    猫在喝水

  • 相关阅读:
    5 November
    31 October
    K-th Path
    P1525 关押罪犯
    dp-棋盘形dp
    P1462 通往奥格瑞玛的道路
    noip2017部分题目
    洛谷orz--尺取法
    树形dp
    最短路练习
  • 原文地址:https://www.cnblogs.com/guochang/p/9554158.html
Copyright © 2011-2022 走看看