面向对象三大特性*

封装

高内聚,低耦合
封装:使一些属性变量被保护,但留有可操作的接口(方法)
在这里插入图片描述

this.

就近原则:当局部变量的名字和成员变量的名字相同时,就近调用
this的作用:调用成员变量
在这里插入图片描述

继承

  1. 子类(派生类)父类(基类),之间有is a的关系
  2. 子类会继承父类的方法,但私有的不可继承
  3. java中有单继承,没有多继承
  4. 通过final修饰的类不能被继承
  5. 构造方法不能继承

super

在这里插入图片描述
在这里插入图片描述

  • 默认调用super调用父类无参,故先打印出person
  • 因为默认存在super,所以在父类存在有参构造时必须将无参构造显示,否则会出现编译错误
  • super必须在子类无参方法的第一行(this相同)
    故super与this不能同时调用方法

方法重写

需要有继承关系,子类重写父类的方法
注意观察不同在这里插入图片描述

  • 需要有继承关系,子类可以重写父类的方法(不可重写属性)
  • 方法名必须相同,参数类别必须相同,方法体不同
  • 子类的重写可以将父类的范围扩大(protect to public 等等)但不可以将父类的范围缩小
  • 抛出的异常可以被缩小,但不能扩大
  • 使用方法重写的原因:需要的操作父类不满足要求
  • static方法属于类,不属于实例(实例是类的一个对象,它具有该类所定义的属性和方法),不能被重写
  1. static方法只能用类名来调用。所以无法被Animal a = new Cat();这一多态的语句影响。
  2. 下图中a.doSome();输出Animal的dosome方法
    在这里插入图片描述
  • final无法被重写
  • private是私有的不能被重写

###Object类中的toString方法重写
当toString方法输出的内容不能满足业务需求时,使用toString方法重写
在这里插入图片描述

在这里插入图片描述

多态

什么是多态?
在这里插入图片描述
为cat赋予一个独有的方法,然后调用a5去完成调用
在这里插入图片描述

转型

向下转型:父>子(强制类型转换)
向上转型:子>父(自动类型转换)
在这里插入图片描述
强转有可能在运行时报错
在这里插入图片描述

增强可拓展性,即同一个方法,可根据发送对象的不同而采取不同的行为方式
在这里插入图片描述
(person类中为输出run,但s1s2都输出son)父类的run被子类方法改写了(如上图)
在这里插入图片描述
对象可执行的方法,主要看左边的类中是否包含这个方法(继承,原本就有,或被子类方法重写)

  • 多态是方法的多态
  • 多态的存在条件:继承关系,方法重写(方法如果不重写,则调用各自的方法,与普通的无区别),***father f1 = new son();***父类的引用指向子类对象

关于new的理解

实例方法的访问可以通过一条口诀来记忆:编译看左边,运行看右边。在 Parent p = new Child();中,使用引用p去调用实例方法,需要Parent类中有这个实例方法,才能编译通过,这称为静态绑定。但是在运行的时候,需要去在Child中寻找对应的方法,称为动态绑定。因此,实例方法才是多态的表现,静态方法和变量在多态中都是无效的。

instanceof

用于在运行阶段动态判断引用指向的对象类型(animal a = new cat();父类的引用指向子类的对象,实际上指向的对象就是等式右边的实际类型)
在这里插入图片描述
在这里插入图片描述

多态在实际开发中的作用

减少耦合度,提高拓展性(向拓展开放,向修改关闭)
在这里插入图片描述

  1. 给cat和dog类一个父类pet,给pet一个抽象的方法eat,再利用方法重写,使得不同宠物有不同的eat方法
  2. 主人类只需调用pet类中的eat方法,而无需修改。只需添加新增宠物类以及修改测试类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值