Java抽象类--附代码示例

318 阅读2分钟

在Java中,abstract class 是一种参考类型,用于给你的程序添加一个抽象层

一个abstract class ,不能直接用来创建对象。相反,你需要在一个普通的(具体的)java类中扩展这个类来利用它。

下面的代码例子显示了你如何将一个名为Human 的抽象类扩展为一个名为Programmer 的类:

abstract class Human {
public void greetings() {
System.out.println("Hello World!");
}
}
class Programmer extends Human {}
Programmer nathan = new Programmer();
nathan.greetings(); // Hello World!

当你创建一个Programmer 类的实例时,你可以调用Human 抽象类中定义的greetings() 方法。

试图创建一个abstract class 的实例将导致Java抛出一个错误,如下图所示:

Human nathan = new Human();
// Error: 'Human' is abstract;
// cannot be instantiated

一个abstract class ,既可以有抽象的方法,也可以有非抽象的方法。一个普通的类只能有非抽象的方法。

一个abstract 方法需要被子类实现,否则Java将无法编译,如下图所示:

abstract class Human {
public void greetings() {
System.out.println("Hello World!");
}
abstract void work();
}
class Programmer extends Human {}
// Error: Class 'Programmer' must either be declared abstract
// or implement abstract method 'work()' in 'Human'

为了使上面的代码工作,你需要在Programmer 类中实现work() 方法:

class Programmer extends Human {
@Override
void work() {
System.out.println("Developing apps with Java!");
}
}

abstract class 中声明为abstract 的所有方法都必须由继承它的类来实现。

在所有其他方面,abstract class 与普通类是一样的:

  • 一个abstract class 可以有构造函数和静态方法
  • 一个abstract class ,可以有最终方法和属性
  • 一个abstract class 可以扩展另一个抽象类或普通类

一个abstract class 与一个interface 相似,但这两者之间有一些关键的区别,你需要了解。

在这里了解更多Ja:va接口与抽象类

现在你已经学会了如何在Java中创建一个abstract class ,干得好!👍