ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

什么是多态?多态的具体有哪些?

2022-01-19 22:01:31  阅读:203  来源: 互联网

标签:obj 指向 哪些 多态 BBB 具体 b1 CCC


文章目录

1. 多态

方法或对象具有多种形态,是OOP(面向对象的编程)的三大特征,
是建立在封装和继承基础之上。

2. 多态具体体现

  1. 方法多态
(1)重载体现多态
(2)重写体现多态
  1. 对象
(1)对象的编译类型和运行类型可以不一致,
     编译类型在定义时没救确定了不能变化。
(2)对象的运行类型是可以变化的,
    可以通过getClass()来查看运行类型。

3. 代码示例

package Test;

public class test01 {
    public static void main(String[] args) {
        AAA obj = new BBB();//向上转型 
        AAA b1 = obj;//让b1也指向obj
        System.out.println("obj的运行类型=" + obj.getClass());//BBB 
        obj = new CCC();//向上转型 
        System.out.println("obj的运行类型=" + obj.getClass());//CCC 
        obj = b1;
        System.out.println("obj的运行类型=" + obj.getClass());//BBB
    }
}
class  AAA{//超类

}

class BBB extends AAA{//派生类

}

class CCC extends BBB{//派生类

}

4.结果

在这里插入图片描述

5.原因

AAA obj = new BBB();
一开始obj指向的是对象BBB,所以第一条 System.out.println ()会输出BBB
//  这条语句是
AAA b1 = obj;

///让b1也指向obj,因为obj指向的是BBB所以b1指向的也是BBB
obj = new CCC()
///让obj指向BBB断掉,重新指向CCC
//所以这条语句 System.out.println("obj的运行类型=" + obj.getClass()); 会输出CCC
obj = b1;
//让obj指向CCC断掉,重新指向 b1 因为 b1 的运行类型是BBB,所以obj重写指回BBB 
//所以同理最后一句输出BBB

标签:obj,指向,哪些,多态,BBB,具体,b1,CCC
来源: https://blog.csdn.net/yayayalaila/article/details/122590044

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有