Java 协作关系
引言
在软件开发中,不同的类之间通过协作进行交互,实现系统的功能。Java 是一种面向对象的编程语言,它提供了多种协作关系的实现方式,如继承、接口和组合等。本文将介绍 Java 中的协作关系,并通过代码示例来说明各种关系的用法和特点。
继承关系
继承是一种协作关系,它允许一个类继承另一个类的属性和方法。在 Java 中,使用关键字 extends
来建立继承关系,子类可以获得父类的非私有成员。下面是一个继承关系的示例代码:
public class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + " is eating.");
}
}
public class Dog extends Animal {
public Dog(String name) {
super(name);
}
public void bark() {
System.out.println(name + " is barking.");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog("Tom");
dog.eat(); // 输出:Tom is eating.
dog.bark(); // 输出:Tom is barking.
}
}
在上面的例子中,Dog
类继承了 Animal
类,可以使用 name
字段和 eat
方法。子类还可以添加自己的字段和方法,如 bark
方法。
接口关系
接口是一种约定,它定义了一组方法的签名,没有实现。类可以实现一个或多个接口,从而表明它们可以提供接口所定义的行为。在 Java 中,使用关键字 implements
来实现接口。下面是一个接口关系的示例代码:
public interface Shape {
double getArea();
double getPerimeter();
}
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;
}
}
public class Rectangle implements Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
public double getArea() {
return width * height;
}
public double getPerimeter() {
return 2 * (width + height);
}
}
public class Main {
public static void main(String[] args) {
Shape circle = new Circle(5);
System.out.println("Circle Area: " + circle.getArea()); // 输出:Circle Area: 78.5
System.out.println("Circle Perimeter: " + circle.getPerimeter()); // 输出:Circle Perimeter: 31.4
Shape rectangle = new Rectangle(3, 4);
System.out.println("Rectangle Area: " + rectangle.getArea()); // 输出:Rectangle Area: 12.0
System.out.println("Rectangle Perimeter: " + rectangle.getPerimeter()); // 输出:Rectangle Perimeter: 14.0
}
}
在上面的例子中,Circle
和 Rectangle
类都实现了 Shape
接口,实现了 getArea
和 getPerimeter
方法。通过接口关系,我们可以将不同的类统一对待,实现多态。
组合关系
组合是一种包含关系,一个类包含其他类的对象作为它的字段。通过组合关系,一个类可以调用其他类的方法来完成自己的功能。下面是一个组合关系的示例代码:
public class Engine {
public void start() {
System.out.println("Engine is starting.");
}
}
public class Car {
private Engine engine;
public Car() {
engine = new Engine();
}
public void start() {
engine.start();
System.out.println("Car is starting.");
}
}
public class Main {
public static void main(String[] args) {
Car car = new Car();
car.start(); // 输出:Engine is starting. Car is starting.
}
}
在上面的例子中,Car
类包含一个 Engine
对象作为它的字段。通过调用 engine.start()
方法,可以实现汽车的启动。
总结
在 Java 中,