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();
        }
    }

    运行结果:

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

  • 相关阅读:
    P3015 [USACO11FEB]最好的括号Best Parenthesis
    P1944 最长括号匹配_NOI导刊2009提高(1)
    P2328 [SCOI2005]超级格雷码
    P2308 添加括号
    P5657 格雷码【民间数据】
    P2196 挖地雷
    P5020 货币系统
    括号序列模型--序列dp--U86873 小Y的精灵国机房之旅
    P1033 自由落体
    P1017 进制转换
  • 原文地址:https://www.cnblogs.com/guochang/p/9554158.html
Copyright © 2011-2022 走看看