首页 > 其他 > 详细

多态学习笔记

时间:2020-05-06 17:10:39      阅读:54      评论:0      收藏:0      [点我收藏+]

多态

多态是同一个行为具有多个不同表现形式或形态的能力。

多态就是同一个接口,使用不同的实例而执行不同操作。

 

简单理解起来就是同一名字的方法在不同对象里会用不同的实现。

举个栗子实现多态(照着鬼灭编的)

这是父类,赋予两个属性,创建一个方法
public class DemonSlayer{

    protected String breathMethord;
    protected String name;//可被子类访问的属性:姓名,呼吸法

    public DemonSlayer() {
        this.breathMethord = "DemonSlayer";
        this.name = "DemonSlayer";
    }//封装

    public String getBreathMethord() {
        return this.breathMethord;
    }

    public String getName() {
        return this.name;
    }

    public void selfIntroduct() {
        System.out.println("I‘m Demon Slayer.");
    }//父类方法

}

之后是两个子类

public class Kamado extends DemonSlayer{
    kamado(){
        breathMethord = "Breath of water";
        name = "Kamado";
    }

    public void selfIntroduct() {
        System.out.println("I‘m Kamado.");
    }//重写
}
public class Agatsuma extends DemonSlayer{
    Agatsuma(){
        breathMethord = "breath of thunder";
        name = "Agatsuma";
    }

    public void selfIntroduct() {
        super.SelfIntroduct();//调用基类的方法
        System.out.println("I‘m Agatsuma.");
    }
}

测试函数

public class Test{
    public void partner(DemonSlayer a) {
        System.out.println(a.getName() + ":" + a.getBreathMethord());
    }

    public static void main(String[] args) {
        DemonSlayer demon = new DemonSlayer();//新建对象
        demon.selfIntroduct();
        DemonSlayer kamado = new Kamado();//新建对象,向上转型
        kamado.selfIntroduct();
        DemonSlayer agatsuma = new Agatsuma();//新建对象
        Agatsuma b = (Agatsuma(agatsuma));//向下转型
        b.selfIntroduct();
        partner(demon);
        partner(kamado);
        partner(agatsuma);
    }
}

Java 实现多态有 3 个必要条件:

继承、重写和向上转型。只有满足这 3 个条件,开发人员才能够在同一个继承结构中使用统一的逻辑实现代码处理不同的对象,从而执行不同的行为。

继承:

在多态中必须存在有继承关系的子类和父类。

重写:

子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。

向上转型:

在多态中需要将子类的引用赋给父类对象,只有这样该引用才既能可以调用父类的方法,又能调用子类的方法。

另一种向下转型也是得以对象之前向上转型过为前提

  

多态学习笔记

原文:https://www.cnblogs.com/yus-1994/p/12836511.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!