写点什么

java 面向对象之多态(向上转型和向下转型)

  • 2022 年 6 月 08 日
  • 本文字数:788 字

    阅读完需:约 3 分钟

java面向对象之多态(向上转型和向下转型)

☀️1.1 多态基本介绍

多态的介绍:多态与封装和继承称为面向对象三大特征,多态是建立在封装和继承基础之上的。

☀️1.2 多态的具体体现

1).🌙方法的多态:重写和重载体现多态

https://xie.infoq.cn/article/cf233e13a4ebc193520913725

2).🌙对象的多态
  1. 一个对象的编译类型和运行类型可以不一致。

  2. 编译类型在定义对象时,就确定了,不能改变。

  3. 运行类型是可以变化的(由向下转型体现)。

  4. “=”的左边为编译类型,“=”的右边为运行类型


动物类 引用名 = new 狗类; //这里,动物类就是编译类型,狗类就是运行类型动物类 引用名 = new 猫类;//我们用父类的引用指向子类

☀️1.3 向上转型与向下转型:

1).🌙向上转型
1. 本质:父类引用指向了子类的对象。2. 语法:父类类型 引用名 = new 子类类型();3. 特点:可以调用父类中所有成员(需遵守访问权限);不能调用子类中特有成员(子类的private)。
复制代码


//向上转型,父类的引用指向了子类Animal animal = new Dog();//animal的编译类型是Animal,运行类型是Doganimal = new Cat;//animal的运行类型变成了Cat,编译类型任然是Animal
复制代码


此时,我们的引用可以使用父类中所有的属性与方法(访问权限内),当我们需要调用子类中的方法时,怎么解决呢?请看向下转型

2).🌙向下转型
    1. 语法:子类转型 引用名 = (子类类型) 父类引用;    2. 只能强转父类的引用,不能强转父类的对象;    3. 要求父类的引用必须指向的是当前目标类型的对象    4. 当向下转型后,可以调用子类类型中所有对象的成员
复制代码


Dog d = (Dog) animal;d.feed();//这里我们就可以调用Dog类中方法
复制代码


此时,我们的对象还是第一次定义的 animal(编译类型在定义对象时,就确定了,不能改变),经过向下转型后,又多了一个引用。例如:李华当上市长后,他被人们称为李市长,同时他还是李华。

1.4.☀️多态中的细节

  • 多态的前提:两个对象(类)存在继承关系

  • 属性看编译类型,方法看运行类型

发布于: 刚刚阅读数: 5
用户头像

还未添加个人签名 2022.06.02 加入

喜欢Java和py,会更新自己在学习过程中遇到**比较重要的知识点**以及**自己遇见的问题与解决方法**哦,如果你也正在学Java,就请留下一个关注吧

评论

发布
暂无评论
java面向对象之多态(向上转型和向下转型)_面向对象_写代码两年半_InfoQ写作社区