- 面向对象知识链接汇总,知识点体系(思维导图)
- Java面向对象(第一天)类,对象,方法的重载,练习题
- Java面向对象(第二天)构造方法,this关键字,内存结构初识,null,NullPointerException,引用类型数组(上),拓展,练习题
- Java面向对象(第三天)引用类型数组(下),继承,super,向上造型(上),拓展,练习题
- Java面向对象(第四天)向上造型(下),重写,访问控制修饰符,static关键字,拓展,练习题
- Java面向对象(第五天)final,static final,abstract关键字(抽象方法,抽象类)
- Java面向对象(第六天)成员内部类(不经常使用),匿名内部类(经常使用)
- Java面向对象(第五天)接口,拓展(类与接口的关系,抽象类与接口的区别),练习题
- Java面向对象(第八天)多态(对象的多态,行为的多态),拓展(面向对象)
- Java面向对象(第九天)简单的内存结构,面向对象三大特征
- Java新手小白入门篇系列持续更新中…
一、多态
1. 对象的多态
1.1 向上造型
- 向上造型,我们也可以理解为引用类型的自动类型转换(小转大)
- 引用类型中父类为大,子类为小
Father f = new Son();
Father f = new Daughter();
- 父类的引用指向子类的对象
// 父类 引用类型变量(引用) 指向 子类的对象 Father f = new Son();
- 能点出来什么看引用的类型
- 能造型称为的类型
- 超类
- 接口
1.2 向下转型(向下造型)
- 向下转型,我们可以理解为引用类型的强制类型转换(大转小)
Person p = new Student(); Student s = (Student)p;
- 向下转型成功的条件
- 引用所指向的对象就是该类型
- 引用所指向的对象继承该类或者实现了该接口
GrandPa g = new Son(); // g(引用) 指向的类型为 Son 类型,所以可以强转为 Son 类型 Son s = (Son)g; // 引用所指向的对象就是该类型 // g(引用) 指向的类型为 Son 类型,所以可以强转为 Son 继承的 Father 类型 Father f = (Father) g; // 引用所指向的对象继承和该类或者实现类该接口 // 爷爷类 public class GrandPa { } // 爸爸类 public class Father extends GrandPa{ } // 儿子类 public class Son extends Father{ }
- 引用类型强转时,如果不符合上述的条件,会造成
ClassCastException
类型转换异常 - 强转之前我们应该使用
instanceof
关键字进行判断,判断引用指向的对象是否属于改类型
何时需要强转:若想访问的变量、方法在超类中没有,则需要强转
2. 行为的多态
2.1 方法的重写
- 重写是子类与父类的一种多态性的表现
- 重写是一种运行时的多态。
- 重写的前提是继承,向上造型之后,调用同一个方法,在运行时根据造型的类型不同调用各种类型重写之后的方法
2.2 方法的重载
重载是否是多态,网友们各执己见,这里我只是阐述下我对这个观点的说明,仅代表我自己
- 重载是一个类多态性的表现
- 重载是一种编译时的多态,根据传参时的类型不同或者数量不同来决定到底调用的那个重载的方法
二、拓展
1. 什么是面向对象
面向对象是以对象为核心来思考,解决问题的一种方式,它是 Java 核心的一种思想;
世间的万事万物我们都可以理解成一个对象,所以才有我们万物皆对象的说法。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/107630.html