java 抽象类 例子
时间: 2023-12-08 16:38:41 浏览: 42
以下是一个Java抽象类的例子:
```java
// 定义一个抽象类Animal
abstract class Animal {
// 定义一个抽象方法run
public abstract void run();
}
// 定义一个继承自Animal的子类Dog
class Dog extends Animal {
// 实现抽象方法run
public void run() {
System.out.println("Dog is running.");
}
}
// 测试类
public class Test {
public static void main(String[] args) {
// 创建Dog对象
Dog dog = new Dog();
// 调用run方法
dog.run(); // 输出:Dog is running.
}
}
```
在上面的例子中,Animal类是一个抽象类,其中包含一个抽象方法run。由于Animal类是抽象的,因此不能直接创建Animal对象。我们定义了一个继承自Animal的子类Dog,并实现了抽象方法run。在测试类Test中,我们创建了Dog对象,并调用了run方法。
相关问题
java 抽象方法例子
抽象方法是指在Java中只有方法声明而没有方法实现的方法。它们只有方法的签名,没有方法的具体实现。抽象方法必须定义在抽象类或接口中,它们不能被直接调用,必须由子类实现或实现接口来提供具体的方法实现。
举个例子来说,假设我们有一个抽象类动物类Animal,其中包含一个名为"sound"的抽象方法,该方法用来表示动物发出的声音。而具体的动物类,例如猫类Cat和狗类Dog都是Animal类的子类,它们需要实现抽象方法sound()来描述猫和狗叫的声音。
```
// 定义抽象类Animal
abstract class Animal {
public abstract void sound(); // 抽象方法
}
// 定义具体动物类Cat
class Cat extends Animal {
public void sound() { // 实现抽象方法
System.out.println("喵喵喵");
}
}
// 定义具体动物类Dog
class Dog extends Animal {
public void sound() { // 实现抽象方法
System.out.println("汪汪汪");
}
}
// 测试
public class Main {
public static void main(String[] args) {
Animal cat = new Cat(); // 创建Cat对象
cat.sound(); // 调用抽象方法sound()
Animal dog = new Dog(); // 创建Dog对象
dog.sound(); // 调用抽象方法sound()
}
}
```
在这个例子中,Animal类是一个抽象类,其中定义了一个抽象方法sound()。Cat和Dog类分别是Animal类的子类,并实现了sound()方法来表示猫和狗叫的声音。在测试代码中,我们创建了Cat和Dog的对象,通过调用sound()方法来输出它们的叫声。这样我们可以看到,抽象方法的定义允许我们在抽象类中声明方法的协议,具体的子类必须实现这些方法来提供自己的功能。
java 抽象工厂 例子
抽象工厂模式是一种创建型设计模式,它允许我们创建一组相关的对象,而无需指定它们的具体类。下面是一个简单的Java抽象工厂模式的例子。
假设我们有一个餐厅,它提供三种不同类型的菜肴:中餐、西餐和日本料理。每种菜肴都有自己的名称和价格。我们可以定义一个抽象工厂接口来创建这些不同类型的菜肴:
```java
public interface FoodFactory {
Food createFood(String name, double price);
}
```
然后,我们可以为每种类型的菜肴创建一个具体的工厂类。例如,中餐的工厂类可以如下所示:
```java
public class ChineseFoodFactory implements FoodFactory {
@Override
public Food createFood(String name, double price) {
return new ChineseFood(name, price);
}
}
```
其中,`ChineseFood`是一个具体的中餐类,它实现了`Food`接口:
```java
public class ChineseFood implements Food {
private String name;
private double price;
public ChineseFood(String name, double price) {
this.name = name;
this.price = price;
}
@Override
public String getName() {
return name;
}
@Override
public double getPrice() {
return price;
}
}
```
同样,我们也可以为西餐和日本料理各创建一个具体的工厂类和对应的菜肴类。
最后,我们可以使用工厂模式来创建不同类型的菜肴。例如,要创建一份中式烤鸭,可以使用以下代码:
```java
FoodFactory factory = new ChineseFoodFactory();
Food food = factory.createFood("烤鸭", 88.0);
```
这样,我们就可以通过抽象工厂模式来创建不同类型的菜肴,而无需指定它们的具体类。