设计一个父类,设计一个子类,子类中通过super初始化父类。例如可以定义一个二维数据点类,定义一个三维数据点类。定义一个测试类对类进行测试。
时间: 2024-10-18 15:07:34 浏览: 31
注意几点-JAVA中有关继承的PPT
在面向对象编程中,为了表示具有相似特性和行为的一组类,我们可以创建一个通用的父类,然后从这个父类派生出具体的子类。这里举个例子,我们设计一个名为`Point`的父类,代表二维数据点,然后创建一个名为`ThreeDimensionalPoint`的子类,它继承自`Point`并添加了第三个维度。
```java
// 父类 Point,代表二维数据点
public class Point {
private double x;
private double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
// 子类可以通过super调用父类构造函数
super(x, y);
}
// 父类的方法
public void moveBy(double dx, double dy) {
x += dx;
y += dy;
}
@Override
public String toString() {
return "Point{" +
"x=" + x +
", y=" + y +
'}';
}
}
// 子类 ThreeDimensionalPoint,增加一个z轴坐标,并重写父类构造函数
public class ThreeDimensionalPoint extends Point {
private double z;
// 使用super调用父类的构造函数,并传入额外的z坐标
public ThreeDimensionalPoint(double x, double y, double z) {
super(x, y); // 调用父类的二维构造函数
this.z = z;
}
// 添加新的方法,如设置和获取z坐标
public void setZ(double z) {
this.z = z;
}
public double getZ() {
return z;
}
@Override
public String toString() {
return "ThreeDimensionalPoint{" +
"x=" + x +
", y=" + y +
", z=" + z +
'}';
}
}
// 测试类 Test
public class TestClass {
public static void main(String[] args) {
// 创建一个二维点
Point point = new Point(1.0, 2.0);
System.out.println(point);
// 创建一个三维点
ThreeDimensionalPoint threeDPoint = new ThreeDimensionalPoint(3.0, 4.0, 5.0);
System.out.println(threeDPoint);
threeDPoint.moveBy(1.0, -1.0);
System.out.println(threeDPoint);
}
}
```
在这个例子中,`ThreeDimensionalPoint`通过`super`关键字调用了父类的构造函数,实现了多态性。在测试类`TestClass`中,我们可以创建这两种类型的点实例,并显示它们的信息。
阅读全文