1、


1、方法重写和重载的区别

重载overload/

重写override

位置 方法名 返回值 参数列表 访问修饰符
重载 overload 在同类中 相同 可以不同(不影响) 必须不同(作为是否重载的唯一标准) 可以不同(不影响)
重写 override 子类重写父类的方法 相同 必须相同(仅仅方法体可以不同) 必须相同 子类的修饰符权限不得低于父类的权限

总结:方法重写时,是在子类中插入一个与父类 《方法名、返回值、参数列表均相同》、《子类的该方法的访问修饰符的权限不比父类低的》方法,并且建议在子类重写方法的前面一行加入 "@override" 作为修饰检查。


-----手动分割线

2、抽象类

1、特点

  1. 成员变量可以包含变量、常量
  2. 成员方法可以包含构造方法、普通方法、抽象方法,有抽象方法的类必须定义为 abstract (抽象)类
  3. 抽象方法的构造方法是用于初始化成员变量的(包括父类和该类本身的成员变量)
  4. 继承自抽象类的子类,必须重写抽象父类的抽象方法,否则必须也定义为抽象类
  5. 可以有静态方法和静态代码块

2、抽象类与普通类的区别

  1. 可以与普通类一样,含有构造方法等,但是抽象方法必须有 abstract 修饰
  2. 抽象类不能实例化对象
  3. 如果有子类继承了一个抽象类,那么这个子类必须重写这个抽象类的抽象方法,否则这个子类必须定义为抽象类
  4. 抽象类的方法的权限修饰符需要根据子类和子类所在包的位置(路径),抽象方法一般定义为public或者protected,因为如果是private,那么子类不能重写该抽象方法了

3、抽象类与接口的区别

接口 interface 的概念

  1. 接口没有 构造方法
  2. 接口中的方法默认都是 public abstract 抽象方法,JDK8之后可以使用default,除去default,其他修饰符都会报错
  3. 其中的变量默认都是 public static final(此时已经不能称为成员变量),若定义为private或其它权限修饰符(除了默认),会编译报错
  4. 接口与类是实现关系,子类实现接口,子类可以实现多个接口
  5. 接口支持多继承
  6. 接口中可以包含静态方法

抽象类和接口的区别

  1. 抽象类可以有构造方法,接口没有
  2. 抽象类的成员方法可以是任意类型,接口只有public abstract(JDK8之后有default和静态)
  3. 抽象类的成员变量可以是任意类型,接口只能是public static finally
  4. 一个类只能继承一个抽象类,但是一个类可以实现多个接口,并且接口可以多继承

-----手动分割线

3、finally 关键字

1、作用

  1. 该类不想被继承的时候,添加 finally 修饰
  2. 该类的方法不想被重写的时候,添加 finally 修饰
  3. 用于修饰常量,finally int num = 3;   //修改num = 5; 会报错
  4. 可以用于修饰引用类型对象常量,包括自定义类对象(修饰的是地址,类似C++的指针常量,类对象的成员变量可以更改)

-----手动分割线

4、static 成员方法和属性的继承

  1. 子类可以继承父类的静态属性和静态方法,父类的静态方法不为 private 或其它的对子类的不可见的情况时
  2. 但是不能通过重写父类的静态方法来实现多态
  3. static 方法只能访问 static 成员,普通成员方法可以调用 static 成员和方法

-----手动分割线


后记

1、继承的对象:

      1、类与类的继承

      2、方法与方法的继承

      3、都是通过 extends 关键字


相关