一、继承
- 子类继承父类,子类这个类变量的引用在原有的指向子类自己类变量空间的原有访问权限上,增加上了父类类变量空间的访问权限,此时子类类变量指向的空间变为了原来子类类变量空间加上父类类变量空间,此时子类类变量空间就变成了两块不同位置空间的合并访问版本,此时用子类类变量创的似复刻变量里的复制变量、路径信息就是照着两个类变量的内容都并上着的创的一个似复刻变量,它创的空间就一块,里面有两类变量的复制变量、两类变量的路径信息
- 此时的子类类变量就不是原来单单指向它自己那块空间的类变量了,而是变成了指向两类变量空间的类变量,所指向管理的空间是两块空间
- 用子类类变量创建的似复刻变量的哈希值用子类类变量来接收,也可以用父类类变量来接收,但用父类类变量接收后,父类类变量的解引用只能指向似复刻变量里面有关父类的部分,子类的部分无法访问
(类变量、似复刻变量参考:【Java学习】类和对象-CSDN博客 )
二、this与super
this、super都是在非静态方法它隐藏this形参下有的:
- 在子类里的this指向的是用两类变量共创的似复刻变量,此似复刻变量里面装的是关于两类变量里创的复制变量、关于两类变量的路径信息,但指向时是优先指向似复刻变量里用原子类创的部分
- super是this里部分的关键字,是要在子类(即合并体)里面才有的,用来特指向子类创的似复刻变量里用父类创的那部分内容的
子类非静态方法中this下可分出this中特指父类的super,而父类非静态方法中只有它自己的this,this分不出super:
三、构造方法
构造方法是每个类里必有、似复刻变量创建时必会去执行的,原子类与父类继承合并后的子类的构造方法里,必有super(参)即父类的构造方法,确保合并后的子类必有必会去执行它们俩的构造方法(不写构造方法的类,Java会对应自动加上默认的无参的构造方法)
- 一个类里面必有构造方法给创建似复刻变量时用,但构造方法里不一定有this(),即在构造方法里不一定有再调用此同一个类里的其它构造方法(构造方法都是与类名同名的(构成方法重载),创建似复刻变量时通过传参选择调用此类里的哪一个构造方法)
- 但一个子类的构造方法中一定有super(参),即在子类的每一个构造方法的最后效果都是一定有super(参)作为构造方法过程中第一条执行的语句,即子类构造方法里一定是有且先调用父类的构造方法的
所以子类在调用构造方法里中的再调用其它构造方法是无法实现的,因为this(参)如果有的话是必须也是在构造方法整个过程中的第一条执行语句,与它必有的super冲突,所以子类的构造方法整个过程的最后效果中,是无法再调用本类中其它的构造方法的,子类的构造方法们只能互独立选择调用
子类创建似复刻变量时首传给的构造方法是在原子类中的,父类的构造方法在创似复刻变量首传时是不能传的
四、访问权限
- 外部类只能由public或不加访问限定符默认的default修饰
- 内部类、类的成员、类的方法可被所有的访问限定符修饰
- 方法内部、代码块内部不可以被访问限定符修饰,因为它们的生命周期与访问权限已经定下就是在所在的{}内了,是已经定下的
1.protected修饰的最大的访问权限为不同包下被继承可被访问
2.同类中,处于全局的成员或方法不管用什么访问修饰限定符修饰都是能互访问的
3.子类继承父类之后,父类的成员变量、方法都相当于进了子类{}内,属于子类同类了,子类里可直接使用到
4.静态方法里的静态环境下,不能对需要实例化的非静态方法、成员进行操作
5.非静态方法里调用非静态方法时不需要实例化出对象再解引用对象调用,因为在非静态方法里已经设计成默认已有对象设计环境了
6.final修饰类使类不能作为父类被继承,变成一个密封类;final修饰变量,使变量里的值不能再被修改,相当于使变量变成了常量
7.
五、执行顺序
父类的静态代码块 -> 子类的静态代码块 -> 父类的实例代码块 -> 父类的构造方法 -> 子类的实例代码块 -> 子类的构造方法
六、组合
继承是将类与别的类合并成新的类,组合是类中使用上别的类: