Java复习-12-继承、覆写与Annotation 注解

继承与覆写

实例化子类对象时,会优先实例化其继承的父类对象,即子类构造方法中隐含了父类构造方法。
java中的类继承不支持多重继承,但支持多层继承。并且对于个人编写的代码而言,理论上不应该超过三层。
子类不能直接访问父类中的 private 的属性。

覆写

子类中保持父类方法名称和参数列表,但实现不同的逻辑。
实例化了子类对象后,若子类中覆写了父类方法。则,在调用时优先使用子类覆写的新方法。
若要调用父类的方法要使用: super.方法名();

覆写控制权限

子类中覆写的方法不能有比父类更为严格的控制权限。比如:若父类中的方法使用了 public 定义,那么子类中的方法只能使用 public 定义。
以后实际开发中只要是定义方法,95%情况下都是用 public。

面试题:请解释Override 与 Overloading 区别?

  • override
    名称:覆写(eg:子类中不同的实现方法)
    概念:方法名称、参数类型及个数、返回值相同
    权限:被覆写方法不能拥有更严格的控制权限
    范围:发生在继承关系类中

  • overloading
    名称:重载(eg: 同一个类中不同的构造方法)
    概念:方法名称、参数类型及个数不同
    权限:没有
    范围:发生在同一个类中

属性覆盖

面试题:解释 super 与 this 区别?

  • 在程序类中使用this表示先从本类中查找所需要的属性或方法,如果本类不存在,则查找父类定义,如果使用super表示不查找子类,直接查找父类。
  • this 与 super 都可以进行构造方法的调用,但this()调用的是本类构造,而super() 是由子类调用父类构造。同时两个语句都必须放在构造方法的首行,所以不能够同时出现;
  • this可以表示当前对象,super没有此类概念。

final 关键字

final 描述的是终结器的概念,使用其可以实现不能被继承的类或不能够被覆写的方法、常量。

final 定义常量

类的不能继承和方法的不可覆写就不再举例了,这里主要说一下通过 final 关键字来定义不可修改的常量。类似于 C 中的const。
实际上常量往往都是公共的定义,所以为了可以体现出共享的概念,往往会使用一种全局常量的形式来定义。使用 public static final 来定义全局常量。

public static final int ON = 1;
public static final int OFF = 0;
定义全局常量的时候每个字母必须大写表示。

Annotation 注解

举例来说就是子类在覆写时,在方法名称上面加的 @override,它所实现的功能是——明确在其下方的方法是子类覆写方法,会在编译器编译时进行检查。

准确覆写:@override

准确覆写,可以直接在编译阶段检查出bug。

过期操作:@Deprecated

出现版本更迭的时候,对于老版本中更新的方法,原来的老方法要依旧支持,但不推荐新人使用时,要给老方法上面加@Deprecated,这样当新人依旧使用老方法时,会给出已有新方法的提示。

压制警告:@SuppressWarings

使得在编译时,不出现该注解下方的方法所涉及的警告。

你可能感兴趣的:(java,开发语言)