本篇主要讲解构造函数、类变量、成员变量、局部变量、方法域等
一:父类与子类的加载顺序
①先加载父类的静态变量,父类的静态语句块,多个变量和语句块按照代码上下顺序执行
②然后加载子类的静态变量,子类的静态代码块,多个变量和语句块按照代码上下顺序执行
③然后加载父类的非静态变量,父类的非静态代码块,多个变量和语句块按照代码上下顺序执行 ,再加载父类的构造器
④最后加载子类的非静态变量,子类的非静态代码块,多个变量和语句块按照代码上下顺序执行 ,再加载子类的构造器
ps:
二:有参构造器和无参构造器
父类中存在有参和无参构造器,子类中的构造器会隐式地加载父类的无参构造器,或者显式地用super.(参数)调用有参构造器,或者显式地用super.()调用无参构造器
父类中只有无参构造器,子类中的构造器会隐式地调用父类的无参构造器,或者显式地用super.()调用无参构造器
父类只有有参构造器,子类中的构造器必须显式地调用父类的有参构造器super.(参数),否则编译出错
ps:
子类中的每个构造器只能调用一次父类构造器,但是每个构造器都可以调用父类的构造器
三:子类继承父类的哪些(父类中用public、protected修饰的)
①子类对象拥有父类的非静态变量、静态变量、静态方法、非静态方法
②子类可以重写父类的非静态方法,不可以重写父类的静态方法,只能隐藏
③在List list=new ArrayList()中
list.非静态方法 调用的是List类中没被ArrayList重写过的List里面的非静态方法和已经被ArrayList重写过的ArrayList里面的非静态方法
list.静态方法调用的是List里的静态方法,就算ArrayList里面有同名的静态方法,也不会调用ArrayList的,如果要调用ArrayList的需要 ((ArrayList)list).静态方法 ←ArrayList的静态方法