编写程序,用到接口、抽象类、实现类(从接口和抽象类继承)、实现类的子类(从实现类继承),其中实现类及其子类需要实例化,并完成对相应功能方法的调用,程序能运行。
时间: 2024-12-02 18:18:07 浏览: 25
在Java中,接口(Interface)和抽象类(Abstract Class)是用来定义规范或行为的,而具体类(Concrete Classes)则是实现这些规范的实际执行者。以下是一个简单的例子来说明如何使用这些概念:
**1. 定义接口(Interface)**
一个接口是一组公共方法的声明,没有方法体。例如:
```java
public interface Animal {
void makeSound();
}
```
在这个例子中,`Animal`接口有一个方法`makeSound()`。
**2. 定义抽象类(Abstract Class)**
抽象类可以包含抽象方法(无实现的方法)和非抽象方法。例如:
```java
public abstract class Mammal implements Animal {
protected String name;
public Mammal(String name) {
this.name = name;
}
@Override
public void makeSound() {
throw new NotImplementedException(); // 子类必须覆盖此方法
}
}
```
这里,`Mammal`是一个抽象类,实现了`Animal`接口,并提供了`name`属性和一个默认的`makeSound()`方法。
**3. 实现类(Concrete Class)**
这是具体的类,它扩展了抽象类并实现了接口中的所有方法。比如:
```java
public class Dog extends Mammal {
public Dog(String name) {
super(name);
}
@Override
public void makeSound() {
System.out.println(name + " says Woof!");
}
}
```
`Dog`类继承自`Mammal`,实现了`Animal`接口,并提供了`makeSound()`的具体实现。
**4. 实例化和调用方法**
你可以创建`Dog`类的实例,并调用其方法:
```java
public static void main(String[] args) {
Dog dog = new Dog("Buddy");
dog.makeSound(); // 输出:Buddy says Woof!
}
```
**相关问题--:**
1. 接口和抽象类的主要区别是什么?
2. 如何在Java中创建接口和抽象类的实例?
3. 抽象类的构造器是如何工作的?
4. 如果一个类已经继承了一个抽象类,还能再继承其他抽象类吗?如果可以,有何限制?
阅读全文