Java基础—面向对象OOP—18三大特性:封装、继承与多态

由于本身理解还不是很到位,所以写的很绕,后续待补充优化

   1、封装(底层):该露的露,该藏的藏

  • 高内聚:类的内部数据操作细节自己完成,不允许外部干涉
  • 低耦合:仅暴露少量的方法给外部使用
  • 属性私有private,get/set
  • IDEA快捷键:alt+insert 快速插入getter、setter,同构造器
  • 一个不明白的点(不清楚是否重要,也不清楚答案是什么,后续待补充:private、public和static的区别--看下面的图
  • 私有的东西无法被继承

2、继承(宏观):扩展extends,是类和类之间的一种关系,还有依赖、组合、聚合

  • 在Java中所有类,都默认直接或间接继承Object类后续待补充
  • IDEA快捷键:光标在类中,点击ctrl+H ,查看继承关系
  • Java只有单继承,没有多继承:一个儿子只能有一个爸爸,一个爸爸可以有多个儿子
  • 私有的东西无法被继承

  •  super与this关键字 看着懵的话,之后应用了回头再看再补充,无需一直纠结(后续待补充)
  • IDEA的使用tip:可以新建file写笔记的

3、方法重写

为什么需要重写?因为父类的功能,子类不一定需要,或者不一定满足

IDEA快捷键:alt + insert 

关于重写:前提是需要有继承关系,子类重写父类的方法

1、方法名、参数列表必须相同

2、修饰符,范围可以扩大但不能缩小:public>protected>default>private

3、抛出的异常:范围可以缩小但不能扩大:如ClassNotFoundException(小) -->Exception(大)

重写是方法的重写,与属性无瓜

重写只与 非静态方法有关,与静态方法无瓜(比较下面两张图)

结论:(可以看蓝色o小圆点)

如果是静态方法:方法的调用仅与方法的左边有关,也就是定义的类型

如果是非静态方法:重写

换种好理解的说法:

有static时,fangfang调用Person类的方法,因为fangfang是用Person类定义的

没有static时,fangfang调用的是对象的方法,fangfang是用Student类new出来的(父类的引用指向了子类)

4、多态

  1. 自己理解:不管什么类型,左边决定有什么方法,右边决定用哪个构造器来初始化
  2. 多态的概念,可以理解为:方法的调用除了本类对象可以调用自己以外,在方法重写里还可以通过父类对象的引用来调用自己
  3. 注意事项:
  4. 是方法的多态,属性没有多态
  5. 父类和子类有联系 类型转换异常 ClassCastException
  6. 存在条件:继承关系,方法需要重写,父类引用指向子类对象
  7. 实现动态编译:类型:可扩展性
  8. 弹幕中说:编译看左边,运行看右边
  9. 对象能执行能执行哪些方法,主要看对象左边的类型,和右边关系不大
  10. 一个对象 实际类型是确定的,可以指向的引用类型就不确定了
  11. Student 能调用的方法都是自己的或者继承父类的
  12. Person类 父类型,可以指向子类,但是不能调用子类独有的方法

5、多态—instanceof 、引用类型的转换

instanceof:判断一个对象时什么类型是否存在父子关系

引用类型的转换:跟基础类型一样

高---低,需要强制类型转换

子类转换为父类,向上转型,可能丢失自己本来的一些方法,直接转换

抽象:封装、继承、多态

  • 47
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值