zoukankan      html  css  js  c++  java
  • Java多态详解

    package QianFeng02;
    //多态
    public class Polymorphic {
        public static void main(String[] args){
          //  HomeCh homeCh=new HomeCh("家鸡1");//一般实例化
            Chickens homeCh=new HomeCh("家鸡1");//Chickens是父类  HomeCh是子类(多态)
            homeCh.eat();
            Chickens pheasant=new Pheasant("野鸡2");
            pheasant.eat();
            //用父类的引用指向子类的对象
    //        homeCh=pheasant;
    //        homeCh.eat();
            System.out.println("------------------------");
            eat(homeCh);
            eat(pheasant);
            Chickens jan=new Jan("尖叫鸡4");//Chickens也可以替换为Jan
            eat(jan);
        }
        //抽象:::面向抽象编程
        public static void eat(Chickens c){//Chickens是父类可以传不同类的对象(而不是只传jan对象或者homeChdu对象)
            System.out.println("鸡翅3");
            c.eat();
        }
    }
    //鸡
    // 不能被实例化
    //抽象类的非抽象子类必须对父类抽象方法进行覆盖
    abstract class Chickens{//父类一般定义为抽象类
        private String name;
        public Chickens(){}
        public Chickens(String name){
            this.name=name;
        }
        public void setName(String name){
            this.name=name;
        }
        public String getName(){
            return name;
        }
         public abstract void eat();//抽象方法必须定义为public或者abstract
    }
    //家鸡
    class HomeCh extends Chickens{
        public HomeCh(String name){
            super(name);//调用父类带参数构造方法(因为父类带参构造)
        }
        @Override
        public void eat() {
            System.out.println(getName()+"吃大米");
        }
    }
    //野鸡
    class  Pheasant extends Chickens{
        public Pheasant(String name){
            super(name);
        }
        @Override//重写抽象类父类的方法
        public void eat() {
            System.out.println(getName()+"吃虫子");
        }
    }
    //尖叫鸡
    class Jan extends Chickens{
        public Jan(String name){
            super(name);
        }
        @Override//重写抽象类父类的方法
        public void eat() {
            System.out.println(getName()+"不吃");
        }
    }
    

      

  • 相关阅读:
    趋势or过渡,量子点屏幕真的优于OLED?
    文件打开方式设置
    学Arduino 需要做哪些准备?(引自"知乎用户:郑兴芳,DhP"的回答)
    Arduino扫盲(持续添加中)
    订购一套Arduino UNO r3入门套件
    第一次接触Arduino
    关于移动端的事件委托问题
    ASDas
    CentOS利用source命令导入sql文件
    CentOS-LAMP
  • 原文地址:https://www.cnblogs.com/july7/p/11193707.html
Copyright © 2011-2022 走看看