请举一个Java中覆盖的例子
时间: 2024-05-19 19:13:17 浏览: 35
public class Animal {
public void sound() {
System.out.println("Animal is making a sound");
}
}
public class Dog extends Animal {
public void sound() {
System.out.println("Dog is barking");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Animal(); // Animal 对象
Animal dog = new Dog(); // Dog 对象
animal.sound(); // 执行 Animal 类的方法
dog.sound(); // 执行 Dog 类的方法
}
}
输出结果:
Animal is making a sound
Dog is barking
在这个例子中,子类 Dog 覆盖了父类 Animal 的 sound() 方法,当调用 dog.sound() 时,程序执行的是子类的方法而非父类的方法,这就是覆盖。
相关问题
请举一个java接口的例子
一个简单的Java接口的例子如下:
```java
public interface Shape {
public double getArea();
public double getPerimeter();
}
```
这个接口定义了一个形状的抽象数据类型,其中有两个方法 `getArea()` 和 `getPerimeter()`,分别用于获取形状的面积和周长。具体实现这个接口的类需要实现这两个方法。例如,一个实现了这个接口的圆形类可以这样写:
```java
public class Circle implements Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
public double getArea() {
return Math.PI * radius * radius;
}
public double getPerimeter() {
return 2 * Math.PI * radius;
}
}
```
这个类实现了 `Shape` 接口,并且提供了 `getArea()` 和 `getPerimeter()` 方法的具体实现。
chatgpt请举一个java桥接模式的例子
ChatGPT是一个由OpenAI开发的自然语言处理模型,它可以用于生成文本回复。它通过训练大量的语料库来学习语言的语义和语法规则,从而能够理解和生成人类语言。
关于Java桥接模式的例子,桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。一个常见的例子是在图形界面中使用桥接模式来连接不同的操作系统和图形库。
假设我们有一个图形界面应用程序,需要在不同的操作系统上运行,并且需要支持不同的图形库。我们可以使用桥接模式来实现这个需求。首先,我们定义一个抽象类"Shape",它包含一个抽象方法"draw":
```java
public abstract class Shape {
protected DrawingAPI drawingAPI;
public Shape(DrawingAPI drawingAPI) {
this.drawingAPI = drawingAPI;
}
public abstract void draw();
}
```
然后,我们定义一个实现类"Circle",它继承自"Shape",并实现了"draw"方法:
```java
public class Circle extends Shape {
private double x, y, radius;
public Circle(double x, double y, double radius, DrawingAPI drawingAPI) {
super(drawingAPI);
this.x = x;
this.y = y;
this.radius = radius;
}
public void draw() {
drawingAPI.drawCircle(x, y, radius);
}
}
```
接下来,我们定义一个接口"DrawingAPI",它包含了绘制图形的方法:
```java
public interface DrawingAPI {
void drawCircle(double x, double y, double radius);
}
```
然后,我们可以实现不同的图形库,例如"AWTDrawingAPI"和"JavaFXDrawingAPI":
```java
public class AWTDrawingAPI implements DrawingAPI {
public void drawCircle(double x, double y, double radius) {
// 使用AWT库绘制圆形
}
}
public class JavaFXDrawingAPI implements DrawingAPI {
public void drawCircle(double x, double y, double radius) {
// 使用JavaFX库绘制圆形
}
}
```
最后,我们可以在应用程序中使用桥接模式来创建不同操作系统上的图形界面:
```java
public class Main {
public static void main(String[] args) {
Shape circle = new Circle(100, 100, 50, new AWTDrawingAPI());
circle.draw();
Shape circle2 = new Circle(200, 200, 50, new JavaFXDrawingAPI());
circle2.draw();
}
}
```
这样,我们就可以通过桥接模式将不同的操作系统和图形库连接起来,实现了图形界面的跨平台支持。