2021.01.08 第一阶段05

一、多态

(一)多态的概述
1.多态:事物的多样性,事物的多种状态。
2.对象的多态性:同一个对象,在不同类中,又不同的名称,又不同的指引指向它,本质:同一事物在不同的类型中又不同的名称和描述。
3.类的多态性:同一个类型,可能具有不同的子类实现。同一个类型的引用,可能指向不同的实现对象。本质:同一个名字描述,在不同的场景下,可能会有不同的实现。
4.多态的前提:(1) 要有继承
(2)要有方法的重写
(3)父引用指向子类对象

(二)多态中成员变量访问 和 方法访问的特点
1.成员变量: 编译看左边,运行看左边。
编译看左边,左边是【=】的左边,如果左边的类中没有相应的成员变量,就编译报错
2. 成员方法: 编译看左边,运行看右边。
编译时,如果左侧的引用所属的类型有对应的方法声明,就编译通过
(三)多态中静态方法访问的特点
1.编译看左边,运行看左边。
2.静态的最终解释:
(1) 静态变量:储存在字节码中,随着类的加载而加载进方法区的静态区中,不会随着队形的变化而变化,只会随着类的变化而变化。
(2)静态方法:随着类的变化而变化,优先于对象的存在,由类名来调用。
(3)多态是围绕着对象展开的,而静态跟对象没有关系,只跟类有关系,所以静态成分不随着对象的变化而变化,不收对象的影响,才叫做静态。
(四)向上向下转型
1、向上转型:
(1)正常情况:本类引用指向本类对象
(2)向上转型:将对象变成了父类引用指向本类对象
(3)本质:缩小子类对象的访问权限和访问范围
2、向下转型:
(1)写法:父类引用指向子类对象
(2)向下转型:将父类引用指向子类对象,转为子类引用指向子类对象
(3)本质:恢复对象原本的访问权限和访问范围
(4)格式:(子类类型)父类引用;IronMan im = (IronMan)m;
(五)多态在内存中的理解
1、在运行过程中,由于引用属于Man类型,身份和权限就类似于super,所以访问数据的时候,访问的
都是父类部分的数据
2、在调用方法的时候,要进行动态绑定,要判断对象到底属于哪个类型,再去调用对象所属类型对应的
那个方法
3、注意事项:动态绑定发生在运行期,但是如果编译期无法通过,运行期是不可能发生的,动态绑定也
就更不可能发生
在这里插入图片描述
(五) 多态的好处
1、好处:增强代码的可扩展性
2、在方法的参数列表中,可以使用父类的引用声明形式参数,将来传来任何一个子类对象,都能够接受
3、在实际开发中,对象的来源很广泛,如果使用一个具体类型的引用去接受对象,很可能接收不到,此
时如果结合多态,使用父类的引用去接受对象,就可以接收到很多子类类型的对象了
(六)instanceof关键字
1、instanceof格式: A instanceof B
2、执行结果:布尔类型
3、作用:A一般都是一个对象,B一般都是一个类型,用来判断,A对象是否和B对象有关,有关就返回
true,无关就返回false

抽象

(一)抽象类和抽象方法
1.抽象:抽取相同相像的内容出来
2. 使用 abstract 关键字来修饰抽象
3. 抽象类:可定义抽象方法的类
abstract class类名 {}
4. 抽象方法:只有方法的声明,没有方法的实现的方法就是抽象方法,需要使用 absract 关键字来修饰
(1)定义格式:public 【static】abstract void get();
(2)在各个子类中,都存在方法声明相同,但是方法实现不同的方法,所以我们将共性的内容:方法
的声明抽取出来,放在父类中,因为无法概括所有的具体情况,所以去掉方法实现,加上 abstract 关
键字修饰,就是一个抽象方法。

(二)抽象类的特点
1.抽象类和抽象放大都需要用 abstract 关键字来修饰
2. 抽象类和抽象方法的关系:
(1) 抽象方法必需定义在抽象类中
(2) 抽象类中也可以不定义抽象方法
(3) 抽象类中不一定都是抽象方法,也可以有非抽象方法
3. 抽象类不能实例化:不能创建对象。
4. 抽象类的发展:使用父类继承抽象类,在子类中实现(重写)父类中的抽象方法
(1)如果子类实现了父类中所有的抽象方法,子类就是一个普通类,可以创建对象,调用方法
(2)如果子类没有完全实现父类中的所有抽象方法,就依然是一个抽象类,就需要他的子类继续向下实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值