Java面向对象的三大特征---多态

  1. Java面向对象的三大特征---多态
    1. 创建一个小女孩,调用三个对象的方法
        package com.dynamic;
    
        public class Girl {
            public void play(Animal animal){
                animal.shout();
                animal.advice();
            }
        }
    
    
        package com.dynamic;
    
        public class Animal {
            public void shout(){
                System.out.println("我是动物,需要人类的爱护");
            }
            public void advice(){
                System.out.println("我是小动物,我们有自己的特色");
            }
        }
    
    
        package com.dynamic;
    
        public class Cat extends Animal {
            public void shout(){
                System.out.println("我是小猫,会喵喵叫");
            }
            public void advice(){
                System.out.println("我是小猫,会爬树");
            }
        //子类Cat中特有的方法,需要进行向下转换;将animal转换成cat,进行调用(这里的animal是Animal的对象);Cat cat= (cat)animal;
            public void eat(){
                System.out.println("我是小猫,我爱喝牛奶");
            }
        }
    
    
        package com.dynamic;
        //这里统一继承父类Animal,由子类抽取父类的过程叫做泛化
        public class Dog extends Animal{
            public void shout(){
                System.out.println("我是小狗,会汪汪叫");
            }
            public void advice(){
                System.out.println("我是小狗,会看家");
            }
        }
    
    
        package com.dynamic;
    
        public class Pig extends Animal {
            public void shout(){
                System.out.println("我是小猪,会叻叻叫");
            }
            public void advice(){
                System.out.println("我是小猪,会吃饭");
            }
        }
    
    
        package com.dynamic;
        public class Test {
            public static void main(String[] args) {
                Girl girl =new Girl();
                /*Dog dog =new Dog();*/
                /*Cat cat =new Cat();*/
                /*Pig pig = new Pig();*/
                Animal animal =new Cat();//这里将new Cat出来的对象虚赋值给animal;这里用到多态’这里是像是将cat转换成animal类型
    
                    Cat cat = (Cat)animal;//向下将animal转换成cat类型;目的是为了获取子类中特有的内容eat()
                        cat.eat();
                        girl.play(animal);
            }
        }
    
    
posted @ 2022-04-06 22:00  爱豆技术部  阅读(54)  评论(0)    收藏  举报