zoukankan      html  css  js  c++  java
  • 多态

    多态:对象执行某个行为方法式表现出不同的形态。
    多态分两种:静态多态(编译多态)通过方法重载来实现,动态多态(运行多态),通过重写来实现。

    动态多态一般通过父类的引用,指向子类的实例来实现。实例调用的时候,调的是子类的方法。

    练习:

    public class Che {        //父类Che
        protected String cheming;
        private String leixing;
        private String dangwei;
        
        public Che(String cheming){        //重载  参数符合会运行
            this.cheming = cheming;
        }
        public Che(String cheming,String leixing,String dangwei){  //重载  参数符合会运行
            this.cheming = cheming;
            this.leixing = leixing;
            this.dangwei = dangwei;
            
        }
        public void shache(){
            System.out.println(cheming+"z");
        }
        public void jiasu(){
            System.out.println(cheming+"s");
        }
        public void qidong(){
            System.out.println(cheming+"h");
        }
    }
    public class Byd extends Che {       //子类继承Che
        public Byd(String cheming){
            super(cheming);
        }
        public Byd(String cheming,String leixing,String dangwei){
            super(cheming,leixing,leixing);        
        }
        public void shache(){
            System.out.println(cheming+"正在刹车"+"1");
        }
        public void jiasu(){
            System.out.println(cheming+"正在加速"+"1");
        }
        public void qidong(){
            System.out.println(cheming+"正在启动"+"1");
        }
        
    }
    public class Jipu extends Che {      //子类也是继承Che
        public Jipu(String cheming) {  
            super(cheming);
        }
        public Jipu(String cheming,String leixing,String dangwei){  
            super(cheming,leixing,dangwei);
        }
        
        public void qidong(){
            System.out.println(cheming+"正在启动"+"2");
        }
        
        public void jiasu(){
            System.out.println(cheming+"加速"+"2");
        }
        
        public void shache(){
            System.out.println(cheming+"正在刹车"+"2");
        }
    }
    public class Siji {               //定义一个类Siji方法来调用父类方法
        public void jiashi(Che c){   //引用父类Che实例化子类
            c.qidong();              
            c.jiasu();
            c.shache();    
        }
    }
        public static void main(String[] args) {
            Che b = new Byd("比亚迪");    //实参
            Che j = new Jipu("吉普");    //实参
            Siji s = new Siji();
    
            s.jiashi(b);     //再用jiashi()方法调用Byd
    s.jiashi(j); //再用jiashi()方法调用Jipu 实现运行多态(动态多态) } }
  • 相关阅读:
    C#规范整理·异常与自定义异常
    C#规范整理·资源管理和序列化
    C#规范整理·泛型委托事件
    C#规范整理·集合和Linq
    <抽象工厂>比<工厂方法>多了啥(区别)
    <工厂方法>比<简单工厂>多了啥(区别)
    Unable to start Ocelot because either a ReRoute or GlobalConfiguration
    MySQL服务安装
    mysql登录报错“Access denied for user 'root'@'localhost' (using password: YES”)的处理方法
    使用博客系统发生_STORAGE_WRITE_ERROR_错误
  • 原文地址:https://www.cnblogs.com/hq233/p/6227412.html
Copyright © 2011-2022 走看看