Java多态详解

匿名 (未验证) 提交于 2019-12-02 21:52:03
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()+"不吃");     } } 

  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!