05构造器详解
一个类即使类体什么也不写,它也会存在一个无参方法,这个方法就是构造方法
类中的构造器 (构造器必须掌握!) 也称构造方法,是在进行创建对象的时候必须要调用的,并且构造器有以下两个特点:
- 必须和类的名字相同
- 必须没有返回类型,也不能写void
使用new关键字,本质是在调用构造器
构造器一般用来初始化值
无参的构造器可以自己定义一个,也可以不定义出来,因为默认会有一个无参构造器,但如果自己定义了一个有参构造器,想调用无参构造器的话就必须也把无参构造器显式定义出来,不想调用可以不定义
(alt+insert快捷键可以快速显示构造器)
06创建对象内存分析
栈堆什么的…主要看图吧
07封装详解
该露的露,该藏的藏:我们程序设计要追求“高内聚,低耦合”,高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合就是仅暴露少量的方法给外部使用
封装(数据的隐藏):通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏
属性私有(private),get/set(获取数据/设置数据的方法)
好处
- 提高程序的安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 系统可维护性增强
08什么是继承
继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模
关键字:extends 意思是"扩展",子类是父类的扩展
Java中只有单继承 没有多继承
继承是类和类之间的一种关系,除此之外类和类之间的关系还有依赖、组合、聚合等
子类继承了父类就会拥有父类的全部方法,但private修饰的方法无法被继承
快捷键:ctrl + h
Java中所有的类都默认直接or间接继承object类
Super详解
子类的无参构造器首先会默认调用父类的无参构造器,如果要显式调用父类构造器必须放在第一行,并且调用自己的构造器时也必须放在第一行,所以这两个调用不能共存 (super()和this()不能共存)
关键字:super 用于子类调用父类
super只能出现在子类的方法/构造方法中
super VS this
-
代表的对象不同:
this:本身调用者这个对象
super:代表父类对象的应用
-
前提:
this:没有继承也可以用
super:只有继承了才能用
-
构造方法:
this():本类的构造
super():父类的构造
方法重写
重写都是方法的重写,与属性无关
非静态方法才能够重写,定义的时候父类的引用指向了子类,于是子类重写了父类的方法,变成自己类里同名的方法,而且方法名和参数列表必须相同,方法体不同,修饰符范围可以扩大但不能缩小 ( public > protected > default > private ),抛出的异常范围可以被缩小但不能扩大
如果是静态方法,方法的调用只和左边定义的数据类型有关,和new之后的类名无关
为什么需要重写:父类的功能,子类不一定需要或者不一定满足