帮我写一个父类是非抽象类子类是抽象类的JAVA例子带main
时间: 2024-11-04 13:15:25 浏览: 13
在Java中,一个父类可以不是抽象类,而子类可以是抽象类。下面是一个简单的例子:
首先,我们创建一个非抽象的父类`Car`:
```java
public class Car {
private String brand;
public Car(String brand) {
this.brand = brand;
}
// 具体的行为,比如展示品牌
public void showBrand() {
System.out.println("This is a " + brand);
}
public static void main(String[] args) {
Car myCar = new Car("Toyota");
myCar.showBrand();
}
}
```
然后,我们定义一个抽象子类`ElectricCar`,它继承自`Car`并添加一些抽象方法:
```java
import java.util.List;
// 抽象类 ElectricCar
public abstract class ElectricCar extends Car {
private List<String> features;
public ElectricCar(String brand, List<String> features) {
super(brand);
this.features = features;
}
// 定义一个抽象方法
public abstract void charge();
@Override
public void showBrand() {
super.showBrand();
System.out.println(", and it's an electric vehicle.");
}
public static void main(String[] args) {
// 这里不能直接创建抽象类的对象,所以用具体子类来替代
MyElectricCar myElectricCar = new MyElectricCar("Tesla", List.of("Autopilot", "Long-range battery"));
myElectricCar.showBrand(); // 调用父类方法
myElectricCar.charge(); // 调用子类的具体实现
}
}
// 实现 ElectricCar 的具体子类 MyElectricCar
class MyElectricCar extends ElectricCar {
public MyElectricCar(String brand, List<String> features) {
super(brand, features);
}
@Override
public void charge() {
System.out.println("Charging the car...");
}
}
```
在这个例子中,`ElectricCar`是抽象的,因为它包含一个抽象方法`charge()`,但是它的实例通过`MyElectricCar`被创建,展示了多态如何工作。
阅读全文