java笔记2:类的加载、构造,extends

从class到对象

class–>加载–>static代码块–>初始化变量–>构造–>对象

加载

1、按需加载
2、只加载一次

static代码块

1、只加载一次,执行也就只有一次
static的注意点可关注笔记1:https://blog.****.net/x_ingo_x/article/details/106697482

变量初始化

1、按顺序进行变量初始化,尽管变量散布类的各处(方法后面)
2、注意通过new其他类的对象变量也会被初始化
比如:Person jack = new Person(jack);
3、对于 char、short、byte、int、long、float、double等基本数据类型的变量来说会默认初始化为0(boolean变量默认会被初始化为false)
4、对于引用类型的变量,会默认初始化为null
参考:https://www.cnblogs.com/dolphin0520/p/3803432.html

构造

1、如无则调用默认构造器

extends

1、成员变量
1)权限:public和protected,不能继承private
2)包访问变量在package内可继承,package外不可继承
拓展知识:https://blog.****.net/YaoDeBiAn/article/details/72522828
java笔记2:类的加载、构造,extends
3)子类出现同名变量,则发生隐藏现象
2、成员方法
1)权限同变量
2)子类出现同名方法(方法名、返回值、参数相同),称为覆盖

引用:覆盖只针对非静态方法(终态方法不能被继承,所以就存在覆盖一说了),而隐藏是针对成员变量和静态方法的。这2者之间的区别是:覆盖受RTTI(Runtime type identification)约束的,而隐藏却不受该约束。也就是说只有覆盖方法才会进行动态绑定,而隐藏是不会发生动态绑定的。在Java中,除了static方法和final方法,其他所有的方法都是动态绑定。

3、super
1)调用父类的变量/方法:
super.成员变量/super.成员方法
2)显式调用父类构造器