本篇主要讲解构造函数、类变量、成员变量、局部变量、方法域等

一:父类子类的加载顺序

①先加载父类的静态变量,父类的静态语句块,多个变量和语句块按照代码上下顺序执行            

②然后加载子类的静态变量,子类的静态代码块,多个变量和语句块按照代码上下顺序执行 

③然后加载父类的非静态变量,父类的非静态代码块,多个变量和语句块按照代码上下顺序执行 ,再加载父类的构造器

④最后加载子类的非静态变量,子类的非静态代码块,多个变量和语句块按照代码上下顺序执行 ,再加载子类的构造器

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的静态方法

 
 
posted on 2019-02-20 13:33  蓝绿绿  阅读(112)  评论(0编辑  收藏  举报