Java 中抽象类中非抽象子类必须实现所有抽象方法吗
不需要。如果子类没有声明为 abstract,它必须实现父类抽象类中所有的抽象方法,否则代码无法编译通过。

未实现抽象方法时编译器会报错吗
会报错。当非抽象子类继承抽象类但未实现全部抽象方法时,编译器会提示该子类也必须声明为 abstract,导致编译失败。

public abstract class Animal {
public abstract void makeSound();
}
// 错误示例:非抽象子类未实现抽象方法
public class Dog extends Animal {
// 缺少 makeSound() 的实现
}
// 正确示例:非抽象子类实现所有抽象方法
public class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow");
}
}上述代码中,Dog 类因为未实现 makeSound() 且未被标记为 abstract,会导致编译错误。而 Cat 类实现了该方法,可以正常实例化。
立即学习“Java免费学习笔记(深入)”;
抽象类中可以有非抽象方法吗
可以。抽象类中可以包含具体实现的非抽象方法,这些方法可以直接被子类调用,无需重写。
public abstract class Vehicle {
private String brand;
public Vehicle(String brand) {
this.brand = brand;
}
// 非抽象方法
public String getBrand() {
return brand;
}
public abstract void start();
}
public class Car extends Vehicle {
public Car(String brand) {
super(brand);
}
@Override
public void start() {
System.out.println(getBrand() + " car started.");
}
}在 Car 类中,start() 方法调用了父类的非抽象方法 getBrand(),这证明了抽象类中的非抽象方法是可以被直接使用的。


















