封装、继承、多态、抽象类、接口

什么是封装?(了解)

可以简单理解为:属性私有化,方法公开化。

封装(Encapsulation)是指一种将接口的实现细节部分包装、隐藏起来的方法。要访问一个类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序,从而把实现者和调用者解耦。

什么是继承?(掌握)

可以简单理解为:子承父业,父类所有非私有的(private)都继承过来,自己还能额外有自己的产业。

继承是使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
通过继承创建的新类称为“子类”,被继承的类称为“父类”。
Java 的继承就是子类继承父类的特征和行为,使得子类对象具有父类的范例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

注意:

  • 子类不能继承父类的构造器的,它只是调用(隐式调用无参构造方法或显式调用有参构造方法)。
  • 子类不能继承父类的 priavte 修饰的项。
  • 子类不能继承 final 修饰的类。final修饰的类里面的方法都是 final的。
  • 子类不能重写 final 修饰的方法
  • 不能多继承(extends),但是可以多实现(implements)
  • 关键字 this 指向自己的引用, super 指向父类的引用。

什么是多态?(熟悉)

可以简单理解为:你有多个孩子,每个孩子展现出不同的吃相。

多态是同一个行为具有多个不同表现形式或形态的能力。可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
多态存在的条件:继承、重写、父类引用指向子类对象。

什么是抽象类?(掌握)

抽象类可以简单看做一个类,不过有如下要求:

  • 抽象类由 abstract 修饰。
  • 抽象类不能用于范例化对象。
  • 抽象类中的抽象方法由 abstract 修饰,没有方法体。
  • 抽象类中除了抽象方法,其他方法均有方法体。
  • 凡是继承这个抽象类的实体子类,都必须要实现所有的抽象方法。

什么是接口?(掌握)

接口可以简单看做一个抽象类(其实并不是类),不过有如下要求:

  • 接口不能用于范例化对象。
  • 接口没有构造方法。
  • 接口中所有的方法必须是抽象方法,否则编译报错。方法隐式指定为 public abstract。
  • 接口中所有的变量都必须初始化,否则编译报错。变量隐式指定为 public static final。
  • 接口不是被类继承了,而是被类实现了(implements)。
  • 接口支持多继承(extends)。

抽象类和接口有什么区别?(掌握)

区别项 抽象类 接口
属性 可以定义变量 只能定义常量,默认 static final 修饰
方法 可以有抽象方法、构造方法、普通方法。 只有抽象方法,默认 abstract 修饰。
JDK8之后可以有方法的实现,方法需要 default 修饰。
JDK9之后可以定义 private 修饰的方法,有方法的实现。
访问控制 无限制 默认 public
抽象区分 对类抽象 对行为抽象
继承/实现 类只能继承一个抽象类 类可以实现多接口;
接口可以继承多接口。

你可能感兴趣的:(java)