在Java中,abstract 是一个关键字,用于定义抽象类abstract class或抽象方法abstract method。abstract class是一种特殊的class,它不能用来建立具体的object,即不能实例化对象。abstract class通常用作其他类的基类,这些child class会提供abstract class中声明的abstract method的具体实现。
换言之,abstract抽象类就是搭建大框架用的,各个method具体怎么执行可以不管。先把大结构弄出来再说。
例如 abstract 一个人{
abstract 脑袋method{具体怎么构造脑袋method,让别人去写吧};
abstract躯干method{具体怎么完成躯干method,让别人去写吧};
abstract四肢method{具体怎么完成四肢method,让别人去写吧};
method{非abstract method method具体实现如下: 手需要XX个骨头神经元这样连接...};
abstract脚method{具体怎么完成脚method,让别人去写吧};
}
以下是关于Java abstract class的几个关键点:
public abstract class AbstractClass {
public abstract void abstractMethod(); // 抽象方法
public void nonAbstractMethod() {
// 非抽象方法的实现
}
}
AbstractClass obj = new AbstractClass(); // 错误,不能实例化抽象类
public class SubClass extends AbstractClass {
@Override
public void abstractMethod() {
// 提供抽象方法的实现
}
}
抽象类中的字段:抽象类可以包含Field(字段),这些字段Variable可以是实例字段(非静态字段)或静态字段。子类可以访问这些字段,就像它们访问普通类的字段一样。
==抽象类与接口==:虽然抽象类和接口都不能用来创建具体object,并且都可以定义abstract method,但它们之间有一些重要的区别。
抽象类可以包含字段和method的具体步骤,而接口不能。
此外,一个class可以实现多个接口,但一个子class只能extends一个abstract class(Java不支持多重继承)。
特点总结: