(static、接口和多态)javaSE查漏补缺day02

static+接口+多态

  • 1.子父类之间可以实现方法的重载。
  • 2.构造方法调用自己的构造方法,只能用this()不能用类名()?
  • 3.static修饰变量,加载到方法区的,静态存储区。
  • 4.static final 静态常量,公有且不能更改。
  • 5.静态成员和方法--优先普通成员和方法进入内存
  • 6.静态方法中,不能使用this,super关键字?
  • 7.静态代码块:初始化某些静态成员属性的。
  • 8.类加载时的初始化顺序
  • 9.一个类实现了一个接口同时继承了一个父类,若再父类和接口中出现同名同类型成员变量会怎么样?
  • 10.必须先继承后实现(否则编译错误)
  • 11.interface里可以定义属性吗?
  • 12.所有公有静态常量,都会定义到一个常量类里
  • 13.接口在方法区里
  • 14.为什么先继承,后实现?
  • 15.接口不能继承类和抽象类,抽象类可以实现接口
  • 16.引用类型,就是把地址和某个类型进行绑定,多态就是把这个类型往上提升。
  • 17.多态(注意事项):
  • 18.类中静态方法只能直接调用其他静态方法。
  • 19.多态的应用
  • 20.子类在继承一个父类的同时实现一个接口,如果父类和接口中的成员冲突怎么办?

1.子父类之间可以实现方法的重载。

不可以,重载只发生在一个类中,底层不是一个类。

2.构造方法调用自己的构造方法,只能用this()不能用类名()?

JVM不予许未实例化的情况下直接调用构造方法。必须new过才行。this是指实例化后的对象

3.static修饰变量,加载到方法区的,静态存储区。

4.static final 静态常量,公有且不能更改。

全局变量,开发中会放到一个公共包里。

static(公有)——强烈建议:使用类名.变量名

static(静态,不用创建对象就可以使用)

5.静态成员和方法–优先普通成员和方法进入内存

所以静态方法里不能访问普通成员变量(普通成员还没进内存初始化呢)。

6.静态方法中,不能使用this,super关键字?

(因为对象还没有产生)

7.静态代码块:初始化某些静态成员属性的。

(有些属性,不能简单的赋值,比如随机数填充数组。)

8.类加载时的初始化顺序

1)静态成员变量的“默认初始化”,

2)再按照静态成员(静态变量,静态方法)的“定义顺序”依法“显示初始化”,如果中间有“静态代码块”会执行静态代码块。

静态代码块,再次新new的时候,不会再次执行。

9.一个类实现了一个接口同时继承了一个父类,若再父类和接口中出现同名同类型成员变量会怎么样?

 1.若父类和接口中成员为public (接口中只能为public)则无法编译出现错误
 2.若父类中成员为private则没什么事,因为父类private 类型成员对外部是不可见的  

 3.父类和接口中有同名static方法时只会调用父类中的

 4.父类中方法和接口中default方法同名时只会调用接口中的方法(接口中默认方法会覆盖父类中public同名方法)

10.必须先继承后实现(否则编译错误)

因为接口的抽象方法和父类中的普通方法重名的话,先实现,就会把父类的方法覆盖掉,先继承就可以保留父类中的方法。

11.interface里可以定义属性吗?

不可以,因为定义的属性会自动编译为公有静态常量,(变成共有的,就不能叫属性了)。会自动定义成 public static final

12.所有公有静态常量,都会定义到一个常量类里

13.接口在方法区里

14.为什么先继承,后实现?

因为接口的抽象方法和父类中的普通方法重名的话,先实现,就会把父类的方法覆盖掉,先继承就可以保留父类中的方法。

15.接口不能继承类和抽象类,抽象类可以实现接口

—因为类里可以有私有成员变量。接口中的成员变量是:—公有、静态、常量的

16.引用类型,就是把地址和某个类型进行绑定,多态就是把这个类型往上提升。

17.多态(注意事项):

—成员变量和方法都是调父类的,只有子类重写父类成员方法,才调子类的。

调用同样的方法,产生不同的行为。

好处:拓展性

坏处:不能访问子类的成员变量。

18.类中静态方法只能直接调用其他静态方法。

因为普通方法,比静态方法加载慢。
静态方法优先加载。

19.多态的应用

形参的多态(常见)

返回值多态(常见)

变量的多态(少见)

20.子类在继承一个父类的同时实现一个接口,如果父类和接口中的成员冲突怎么办?

成员变量----会发生冲突,需要重新定义成员变量。

成员方法-----不会冲突,先extends 再implements 成员方法优先继承父类的,就会把接口的方法重写。

你可能感兴趣的