不一定。在抽象類中,可以包含抽象方法和非抽象方法。抽象方法是指只有方法簽名而沒有具體實現(xiàn)的方法,它們沒有方法體。抽象方法必須在具體的子類中實現(xiàn)。而非抽象方法是有具體實現(xiàn)的方法,它們可以在抽象類中直接定義并提供默認(rèn)實現(xiàn),子類可以選擇性地覆蓋這些非抽象方法。
抽象類是為了充當(dāng)其他類的基類而設(shè)計的,它可以定義一些共同的屬性和方法,并強(qiáng)制要求子類實現(xiàn)某些方法。子類繼承抽象類后,必須實現(xiàn)其中的抽象方法,而非抽象方法可以直接使用或者根據(jù)需要進(jìn)行覆蓋。
下面是一個示例,展示了抽象類中既包含抽象方法又包含非抽象方法的情況:
abstract class AbstractClass {
// 抽象方法
public abstract void abstractMethod();
// 非抽象方法
public void nonAbstractMethod() {
System.out.println("This is a non-abstract method.");
}
}
class ConcreteClass extends AbstractClass {
// 實現(xiàn)抽象方法
public void abstractMethod() {
System.out.println("This is an implementation of the abstract method.");
}
}
public class Main {
public static void main(String[] args) {
ConcreteClass obj = new ConcreteClass();
obj.abstractMethod();
obj.nonAbstractMethod();
}
}
在上面的例子中,`AbstractClass`是抽象類,其中包含一個抽象方法`abstractMethod()`和一個非抽象方法`nonAbstractMethod()`。`ConcreteClass`是`AbstractClass`的子類,必須實現(xiàn)抽象方法`abstractMethod()`,同時可以繼承和使用非抽象方法`nonAbstractMethod()`。