-
什么是抽象类?
将类和类之间的共同特征提取出来形成抽象类,抽象类和抽象类之间还可以进一步抽象。抽象类无法实例化。虽然抽象类不能被实例化,但是会有构造方法,供子类使用。 -
什么是抽象方法?
抽象方法表示没有实现的方法,即没有方法体的方法。有抽象方法的类一定是抽象类,但抽象类不一定有抽象方法。所以继承抽象类的非抽象类必须对抽象类中的抽象方法进行重写。 -
判断:java中凡是没有方法体的方法都是抽象方法(×)
Object类中有很多方法都没有方法体,例如:
public native int hashCode();
这个方法底层调用了c++写的动态链接库程序。native表示调用JVM本地程序。
public class AbstractTest01 {
public static void main(String[] args) {
// 面向抽象编程
Animal a = new Bird(); //向上转型
// 编译和运行两种状态:编译通过的是Animal中的display方法,运行执行的是Bird中的display方法
// 编译不能通过子类中独有的方法,编译通过的对象a是属于Animal类型,但运行时产生的是Bird类型对象
a.display();
}
}
abstract class Animal {
int a;
// 可以有构造方法
public Animal () {
}
// 抽象方法
public abstract void display();
// 非抽象方法
public void move() {
}
}
class Bird extends Animal{
// 对继承过来的抽象方法进行重写
public void display() {
System.out.println("display");
}
public void withdraw() {
System.out.println("withdraw");
}
}
4.什么是接口(interface)?
- 接口是一种特殊的抽象类(完全抽象),编译之后生成的也是class文件。
- 接口支持多继承,但java中的类(包括抽象类)不支持多继承。
- 接口中只能有常量和抽象方法。
- 接口中定义常量时可以省略修饰符“public static final”。
- 接口中的定义抽象方法时可以省略修饰符“pubic abstract”。
- 接口中的所有元素都是public的。
- 类与类之间叫继承,接口和类之间叫实现,关键字“implement”。
- 实现接口时,必须将其所有的抽象方法进行重写。
- 一个类可以同时实现多个接口。
- 接口之间没有继承关系进行向下强制类型转换,编译不会报错,但是运行时会出现ClassCastException异常。
- 接口和继承可以同时出现,先写继承,后写实现。
- 接口中没有构造方法。
5.接口在开发中的作用?
- 接口的作用类似于多态,降低程序耦合度,提高程序扩展力,符合ocp开发原则。不要面向具体编程。
- 任何一个接口都有调用者和实现者,接口可以将调用者和实现者解耦合。调用者面向接口调用,实现者面向接口编写实现。