• 关于Java多态


    什么是多态

    同一个实现接口,使用不同的实例而执行不同的操作

    子类转换成父类的规则:

    *将一个父类的引用指向一个子类对象时,称为上转型,自动进行类型转换

    *此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法

    *此时通过父类引用变量无法调用子类特有的方法

    /**
     * 宠物类,狗狗和企鹅的父类
     */
    package cn.yy.test01;
    
    public abstract class Pet {
        private String name;
        private int health;
        private int love;
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getHealth() {
            return health;
        }
        public void setHealth(int health) {
            this.health = health;
        }
        public int getLove() {
            return love;
        }
        public void setLove(int love) {
            this.love = love;
        }
        
        public abstract void eat();
    }
    package cn.yy.test01;
    /**
     * 
     * 狗狗类
     * @author CKW
     *
     */
    public class Dog extends Pet {
        private String strain;//品种
        
        
        public String getStrain() {
            return strain;
        }
    
    
        public void setStrain(String strain) {
            this.strain = strain;
        }
    
    
        public Dog(String name,String strain) {
            super();
            this.strain = strain;
        }
        public Dog() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        /**
         * 实现狗狗吃饭方法
         * 
         */
        @Override
        public void eat() {
    
        }
    
    }
    package cn.yy.test01;
    /**
     * 企鹅类
     * @author CKW
     *
     */
    public class Penguin extends Pet {
        private String sex;//性别
        
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        /**
         * 实现企鹅吃饭方法
         */
        @Override
        public void eat() {
            // TODO Auto-generated method stub
    
        }
    
    }
    package cn.yy.test01;
    /**
     * 主人类
     * @author CKW
     *
     */
    public class Master {
        private String name="";//主人名字
        private int money=0;//元宝数
        
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getMoney() {
            return money;
        }
    
        public void setMoney(int money) {
            this.money = money;
        }
    
        public Master (String name,int money){
            this.name=name;
            this.money=money;
        }
        
        /**
         * 主人给宠物喂食
         */
        public void feed(Pet pet){
            pet.eat();
        }
        
        //主人给Dog喂食
        public void feed(Dog dog){
            dog.eat();
        }
        
        //主人给Penguin喂食
        public void feed(Penguin pgn){
            pgn.eat();
        }
                
    }
    package cn.yy.test01;
    
    
    public class Test {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Dog dog=new Dog("偶偶","雪瑞纳");
            //Penguin penguin=new Penguin();
            Master master=new Master("王先生", 100);
            master.feed( dog);//主人给狗狗喂食
            
        }
    
    }
  • 相关阅读:
    关于SEL数据类型的简单知识点
    小结RunLoop
    iOS-静态库的创建与使用
    MRC 下block 小结
    Native与H5交互的一些解决方法
    iOS UIPickerView 显示全国省市
    iOS开发 首次启动显示用户引导,第二次启动直接进入App,UIScrollView,UIPageControl,NSUserDefaults
    去掉tableView的header view的粘黏性
    黑苹果-IOS学习的开始
    IOS中程序如何进行推送消息(本地推送,远程推送)
  • 原文地址:https://www.cnblogs.com/ckwblogs/p/5964919.html
Copyright © 2020-2023  润新知