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()+"不吃");
        }
    }
    

      

  • 相关阅读:
    三步完成自适应网页设计
    EasyUI DataGrid 修改每页显示数量的最大值&&导出Grid到Excel
    EasyUI DataGrid 实用例子(2015-05-22)
    C# 如何将List拆分成多个子集合
    EasyUI Tabs绑定右键
    微信支付-扫码支付备忘
    微信支付:模板消息实现过程备忘
    4、http协议之二
    1、套按字及http基础知识之一
    3、Web server 之httpd2.2 配置说明
  • 原文地址:https://www.cnblogs.com/july7/p/11193707.html
Copyright © 2011-2022 走看看