Skip to content

Java类要点

1. 重写和重载

1.1 重写

子类可以继承父类的方法,如果想做修改就需要重写。
重写的方法具有和父类方法相同的方法名、返回类型和参数。
如需要在重写方法里面调用父类方法,可以使用super关键字引用父类方法。

1.2 重载

方法重载可以让类具有使用统一的方法处理不同类型数据的能力。
方法重载具有相同的方法名,不同的方法参数包括个数类型,返回类型也可以不同。

2. 接口和抽象类

2.1 不同点

  1. 类可以实现很多接口,但是只能继承一个抽象类。
  2. 在JDK8之前接口中全是抽象方法,JDK8之后允许包含staticdefault实现方法。抽象类是一直允许包含抽象和非抽象方法。
  3. 接口中的声明变量默认都是final修饰的,抽象类中是可以包含非final的变量。
  4. 接口主要用于定义某些行为或功能的契约。抽象类用于共享代码和提供基本实现,适用于具有共同特征的类。
  5. 接口不能有构造方法。抽象类可以有构造方法,允许子类通过父类构造函数进行初始化。

2.2 相同点

  1. 接口和抽象类都不能直接实例化。
  2. 你可以通过子类实现接口或继承抽象类,从而获取其定义的抽象方法。
  3. 抽象类和接口都可以用于实现多态,子类可以通过父类或接口的引用来调用实现的方法。

2.3 使用场景

  1. 使用接口的场景
  • 当你希望定义一个标准,可能有多个实现并且实现之间没有强依赖的行为。
  • 当你需要支持多重继承时。
  • 当你只关心某个能力(像行为或功能)时。
  1. 使用抽象类的场景
  • 当你有一些共有的状态(成员变量)或行为(方法),并且希望使用共享的实现。
  • 当你希望为子类提供一些默认实现或基础功能时。
  • 当你允许子类继承时不需要过多的灵活性。