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

    运行结果:

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

  • 相关阅读:
    hdu 1087(LIS变形)
    poj 1088(记忆化搜索)
    hdu 1505(最大子矩阵)
    hdu 1506(好题+DP或者RMQ)
    poj 2593&&poj2479(最大两子段和)
    hdu 1003(最大子段和)
    hdu 2881(LIS变形)
    poj 1692(动态规划)
    CodeForces 626C Block Towers
    CodeForces 626B Cards
  • 原文地址:https://www.cnblogs.com/guochang/p/9554158.html
Copyright © 2011-2022 走看看