Java 抽象类详解:语法、特性与面试高频考点
·
抽象类
一、抽象类概念
抽象类是使用 abstract 关键字修饰的、不能被直接实例化(不能 new 对象)的特殊类,它的主要作用是定义统一的规范与结构,让子类去继承并实现未完成的方法
二、抽象类语法
抽象类
抽象方法就是没有方法体的方法,必须用 abstract 修饰
示例:
// 抽象类
public abstract void Animal();
抽象方法
被 abstract 修饰的⽅法,没有⽅法体
示例:
abstract class Animal {
// 抽象方法
public abstract void run();
}
抽象类也是类,内部可以包含普通⽅法和属性,甚⾄构造⽅法
示例:
abstract class Animal {
// 普通变量
String name;
// 普通方法
public void eat() {
System.out.println("吃饭");
}
// 抽象方法
public abstract void run();
}
三、抽象类的特性
1. 抽象类不能直接实例化对象
示例:
abstract class Animal {
// 普通变量
String name;
// 普通方法
public void eat() {
System.out.println("吃饭");
}
// 抽象方法
public abstract void run();
}
public static void main(String[] args) {
Animal animal =new Animal();
// 编译出错
Error:(30, 23) java: Animal 是抽象的; ⽆法实例化
}
2. 抽象⽅法不能是private的
private 方法子类根本看不见,看不见就没法重写;而抽象方法的意义就是让子类重写,存在矛盾
示例:
abstract class Animal{
abstract private void run();
}
// 编译出错
Error:(4, 27) java: ⾮法的修饰符组合: abstract和private
3. 抽象⽅法不能被final和static修饰
抽象⽅法要被⼦类重写,所以抽象⽅法不能被final和static修饰
示例:
public abstract class Animal{
abstract final void run();
abstract public static void eat();
}
// 编译报错:
// Error:(20, 25) java: ⾮法的修饰符组合: abstract和final
// Error:(21, 33) java: ⾮法的修饰符组合: abstract和static
4. 子类必须重写所有抽象方法,否则子类也必须变成抽象类
示例:
abstract class Animal {
// 抽象方法
public abstract void run();
}
// 子类继承抽象类,但不重写 run()
class Dog extends Animal {
// 没有重写 run()
}
结果:直接报错!
报错原因:Dog 不是抽象类,但是它继承了未实现的抽象方法,不完整
四、总结
- 用 abstract 关键字声明
- 不能创建对象(不能 new)
- 抽象⽅法不能是private
- 抽象⽅法不能被final和static修饰
- 可以包含:
普通成员变量
普通方法(有实现)
抽象方法(没有方法体,只有声明) - 子类必须重写所有抽象方法,否则子类也必须变成抽象类
- 抽象类存在的最大意义就是为了被继承,抽象类本身不能被实例化,要想使用,只能创建该抽象类的子类.然后让子类重写抽象类中的抽象方法
更多推荐




所有评论(0)