面向对象特性之多态

/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*vx:it_daimeng
*/

1、什么是多态

        多态是我们可以创建在不同变成上下文中行为不同的方法或者引用的能力。其简而言之就是调用同一种方法却呈现不同的状态。

        在面向对象中多态与封装,继承并称为面向对象的三大特性。

2、多态的产生

        是因为由于方法重载/覆盖使得我们的方法的实现发生了改变,但是我们的标识符却没变,因此产生了多态。

3、Java中的多态

        在Java中多态可以分为运行时多态与编译时多态。

        编译时多态:方法重载时参数的静态数据绑定。通过方法重载实现控制流由编译时本身决定的一种方式。

        运行时多态:通过继承实现方法覆盖使得数据动态绑定。

package next.overrideinextends;
public class GrandFather {
public void eatPotato() {
System.out.println("Be careful! The potato is sooo hot!");
}
}
class Father extends GrandFather {
@Override
public void eatPotato() {
System.out.println("Nice!");
}
}
class Son extends Father {
@Override
public void eatPotato() {
System.out.println("Nice!");
}
}
class Output {
public static void main(String[] args) {
GrandFather gf = new GrandFather();
GrandFather f = new Father();
GrandFather s = new Son();
s.eatPotato();
f.eatPotato();
gf.eatPotato();
}
}

运行结果:

 4、向上转型的特点

        ①向上转型其实就是将子类的内容赋值给父类。

        ②若子类在父类的基础上做了方法扩展,则子类扩展的功能将无法被父类调用。

        ③子类若是对父类的方法重写了,则向上转型后,父类调用该方法将不再执行父类的内容而是执行子类的内容。

        

5、向上转型的好处

        向上转型实现了引用的类型统一以及传递参数的统一。


public class GrandFather {
    public void eatPotato() {
        System.out.println("Be careful! The potato is sooo hot!");
    }
}
class Father extends GrandFather {
    @Override
    public void eatPotato() {
        System.out.println("Nice!");
    }
}
class Son extends Father {
    @Override
    public void eatPotato() {
        System.out.println("Nice!");
    }
}
class Output {
    public void aVoid(GrandFather f){
        f.eatPotato();
    }
    public static void main(String[] args) {
        GrandFather gf = new GrandFather();
        GrandFather f = new Father();
        GrandFather s = new Son();
       Output output=new Output();
       output.aVoid(gf);
        output.aVoid(f);
        output.aVoid(s);
    }
}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值