什么是封装?(了解)
可以简单理解为:属性私有化,方法公开化。
封装(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 |
抽象区分 | 对类抽象 | 对行为抽象 |
继承/实现 | 类只能继承一个抽象类 | 类可以实现多接口; 接口可以继承多接口。 |