Java-面向对象特性之多态(详细版)

【1】多态跟属性无关,多态是指方法的多态,而不是属性的多态。

【2】案例代入:小女孩养宠物(对象为小女孩和宠物)

Animal类(父类)

package com.hhf.test01;


public class Animal {//父类:动物
    public void shout(){
        System.out.println("动物必备技能之一:叫...");
    }
}

Cat类(子类)

package com.hhf.test01;


public class Cat extends Animal {
    public void shout(){
        System.out.println("跟我一起学猫叫!!一起喵喵喵");
    }
    public void scratch(){
        System.out.println("小猫咪,会挠人");
    }
}

Dog类(子类)

package com.hhf.test01;


public class Dog extends Animal{
    public void shout(){
        System.out.println("你在狗叫什么啊?");
    }
    public void guard(){
        System.out.println("狗会保护主人,看家护院");
    }
}

Girl类 

package com.hhf.test01;


public class Girl {
    //跟猫玩
   /* public void play(Cat cat){
        cat.shout();
    }*/
    //跟狗玩
    /*public void play(Dog dog){
        dog.shout();
    }*/
    //跟动物玩
    public void play(Animal an){
        an.shout();
    }
}

Test测试类

package com.hhf.test01;

public class Test {
    public static void main(String[] args) {
        //具体的猫
//        Cat c = new Cat();
        //具体的小女孩
        Girl g = new Girl();
        //小女孩跟猫玩
//        g.play(c);
        //具体的狗
//        Dog d = new Dog();
        //小女孩跟够玩
//        g.play(d);
        //具体的动物
        Cat c = new Cat();
        Animal an=c;
//        Animal an=new Animal();
        g.play(an);

    }
}

【3】多态特点

  1. 先有父类,再有子类——》叫作继承;先有子类,再有父类——》叫作泛化

  2. 什么是多态:多态就是多种状态,同一个行为,不同的子类表现出来不同的形态。多态指的就是同一个方法调用,然后由于对象不同会产生不同的行为。

  3. 多态的好处:为了提高代码的扩展性,符合面向对象的设计原则:开闭原则;开闭原则:指的就是扩展是开放的,修改是关闭的;注意:多态可以提高扩展性,但是扩展性没有达到最好,以后我们会学习反射。

  4. 多态的要素:

        a:继承

        b:重写:子类对父类的方法重写

        c:父类引用指向子类对象:

Cat c = new Cat();
Animal an=c;

        将上面的代码合成一句话:Animal an= new Cat();

        =左侧:编译期的类型;        =右侧:运行期的类型

        Animal an= new Pig();

        g,play(an);

        public void play(Animal an){

                an.shout();

        }

        上面的代码,也是多态的一种非常常见的应用场合:父类当方法的形参,然后传入的是具体的子类的对象,然后调用同一个方法,根据传入的子类的不同展现出来的效果也不同,构成了多态

【4】多态内存分析

 现在我就想访问到eat()方法和weight属性:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值