什么是抽象类?
将类和类之间的共同特征提取出来形成抽象类,抽象类和抽象类之间还可以进一步抽象。抽象类无法实例化。虽然抽象类不能被实例化,但是会有构造方法,供子类使用。
什么是抽象方法?
抽象方法表示没有实现的方法,即没有方法体的方法。有抽象方法的类一定是抽象类,但抽象类不一定有抽象方法。所以继承抽象类的非抽象类必须对抽象类中的抽象方法进行重写。
判断: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开发原则。不要面向具体编程。任何一个接口都有调用者和实现者,接口可以将调用者和实现者解耦合。调用者面向接口调用,实现者面向接口编写实现。