抽象类
1.抽象类:类和类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类。
类本身是不存在的,所以抽象类无法创建对象(无法实例化)。
2.抽象类属于引用数据类型。
3.语法:
[修饰符列表] abstract class 类名{
类体;
}
4.抽象类无法创建对象,无法实例化,抽象类是用来被子类继承的。
5.final和abstract不能联合使用,这两个关键字是对立的。
6.抽象类的子类可以是抽象类也可以不是抽象类。
7.抽象类虽然无法实例化,但抽象类具有构造方法,而此构造方法是供子类继承使用的。
8.抽象方法:表示没有实现的方法,没有方法体的方法。
例如:public abstract void doSome();
·抽象方法的特点:
----没有方法体,以分号结尾。
----前面修饰符列表中有abstract关键字。
9.抽象类中不一定有抽象方法,但抽象方法必须出现在抽象类中。
重要结论
:一个非抽象的类继承抽象类,必须将类中的抽象方法实现了(覆盖/重写)。
例如:
abstract class Animal(){
public abstract move();
}
Bird extends Animal(){
public move(){}
}
若子类是抽象类,则父类中继承过来的抽象方法也可以不进行实现。
面向抽象编程
对于父类是抽象类,子类不是抽象类,使用多态(父类型引用指向子类型对象)
Animal a = new Bird();//(向上转型)
a.move();
编译时是Animal中的move,运行时执行的是Bird中的move.
面试题:
java语言中凡是没有方法体的方法都是抽象方法(×)
Object类中就有很多方法都没有方法体,都是以“;”结尾的,但他们都不是抽象方法,例如:
public native int hashCode();
这个方法底层调用了C++写的动态链接库程序。
前面修饰符没有abstract,有一个native,表示调用JVM本地程序。