Java抽象类是一种特殊的类,它不能被实例化,只能被继承。它可以包含抽象方法和非抽象方法。抽象方法是一种特殊的方法,它只有声明,而没有实现。子类必须实现所有的抽象方法,否则子类也必须声明为抽象类。
在 Java 中写一个抽象方法很容易,只需要在声明方法时使用关键字 abstract 即可。例如:
public abstract void doSomething();
上述代码声明了一个名为 doSomething 的抽象方法,该方法不包含任何代码逻辑,而是用来告诉子类必须要实现该方法。
如果想要在 Java 抽象类中写一个具体的、有代码逻辑的方法,则可以使用关键字 final 来修饰该方法:
public final void doSomething(){ // 具体的代码逻辑 }
上述代码声明了一个名为 doSomething 的具体方法,该方法包含了具体的代码逻辑。此外还使用了 final 关键字来修饰该方法,表明子类不能重写该方法。
Java可以定义一个类,其对象不能被创建。
它的目的只是表示一个想法,这是其他类的对象共有的。
这样的类称为抽象类。
我们需要在类声明中使用 abstract
关键字来声明一个抽象类。
例如,下面的代码声明一个Shape类的抽象:
public abstract class Shape { }
下面的代码为Shape类添加了一个draw()方法。
public abstract class Shape { public Shape() { } public abstract void draw(); }
抽象类不一定意味着它具有至少一个抽象方法。
如果一个类有一个被声明或继承的抽象方法,它必须被声明为抽象。
抽象方法的声明方式与任何其他方法相同,只是它的主体由分号表示。
下面的Shape类有抽象和非抽象方法。
abstract class Shape { private String name; public Shape() { this.name = "Unknown shape"; } public Shape(String name) { this.name = name; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } // Abstract methods public abstract void draw(); public abstract double getArea(); public abstract double getPerimeter(); }
下面的代码展示了如何创建一个Rectangle类,它继承自Shape类。
class Rectangle extends Shape { private double width; private double height; public Rectangle(double width, double height) { // Set the shape name as "Rectangle" super("Rectangle"); this.width = width; this.height = height; } // Provide an implementation for inherited abstract draw() method public void draw() { System.out.println("Drawing a rectangle..."); } // Provide an implementation for inherited abstract getArea() method public double getArea() { return width * height; } // Provide an implementation for inherited abstract getPerimeter() method public double getPerimeter() { return 2.0 * (width + height); } }
Java面向对象设计 -Java泛型方法和构造函数泛型方法我们可以在方法声明中定义类型参数,它们在方法的返回类型之前的尖括号中指定...
Java面向对象设计 -Java注释用法注释元素的提供值必须是编译时常量表达式,我们不能使用null作为注释中任何类型元素的值。原始类...
Java面向对象设计 - Java枚举类型什么是枚举类型?枚举类型创建常量的有序列表作为类型。它以特定顺序指定常量。在枚举类型中定...
Java面向对象设计 -Java枚举主体将主体添加到枚举常量我们可以为每个枚举常量添加一个不同的体。身体可以有字段和方法。枚举常量...