Java接口练习题:实现矩形与正方形类
本文通过具体案例讲解Java接口的使用,包括定义IPrintx接口、实现Rectangle矩形类以及创建Square正方形子类。重点展示了方法重写、继承关系以及几何计算的代码实现。
目标与准备
本练习旨在掌握Java中接口的定义与实现,以及类的继承与多态特性。需要理解以下核心概念:
- 接口(Interface):定义方法规范但不提供实现,类通过
implements关键字接入。 - 继承(Extends):子类继承父类属性和方法,可使用
super或直接访问非私有成员。 - 多态(Polymorphism):子类可以重写父类方法,通过对象引用调用不同实现。
第一步:定义接口规范
首先创建一个接口IPrintx,其中声明一个无参数、无返回值的抽象方法printMyWay。
package cn.edu.sctu.java20.homework.Printx;
public interface IPrintx {
void printMyWay();
}
说明:接口命名习惯以大写“I”开头,仅包含抽象方法签名。
第二步:实现矩形类
编写Rectangle类,实现IPrintx接口,并包含长、宽、面积、周长的计算逻辑。
package cn.edu.sctu.java20.homework.Printx;
public class Rectangle implements IPrintx {
double width;
double length;
double perimeter;
double area;
// 设置长和宽
public void SetLength(double width1, double length1) {
this.width = width1;
this.length = length1;
}
// 计算面积
double getArea() {
area = length * width;
return area;
}
// 计算周长
double getPerimeter() {
perimeter = length * 2 + width * 2;
return perimeter;
}
// 实现接口方法,打印详细信息
@Override
public void printMyWay() {
System.out.println("长为:" + length + "宽为:" + width +
"周长为:" + perimeter + "面积为:" + area);
}
// 测试入口
public static void main(String[] args) {
Rectangle rectangle = new Rectangle();
rectangle.SetLength(6, 4);
rectangle.getArea();
rectangle.getPerimeter();
rectangle.printMyWay();
}
}
完成判断:运行main方法,控制台输出矩形长6、宽4对应的面积24.0和周长20.0,即表示实现正确。
第三步:扩展正方形类
创建Square类继承自Rectangle,增加对角线计算方法并重写printMyWay。
package cn.edu.sctu.java20.homework.Printx;
public class Square extends Rectangle {
double diagonal;
// 获取对角线长度(利用勾股定理)
double getDiagonal() {
diagonal = Math.sqrt(width * width + length * length);
return diagonal;
}
// 重写父类方法,增加对角线信息输出
@Override
public void printMyWay() {
System.out.println("长为:" + length + "宽为:" + width +
"周长为:" + perimeter + "面积为:" + area +
"对角线为:" + diagonal);
}
// 测试入口
public static void main(String[] args) {
Square square = new Square();
square.SetLength(6, 6); // 正方形边长相等
square.getDiagonal();
square.getArea();
square.getPerimeter();
square.printMyWay();
}
}
注意:在Square中,由于是正方形,长宽相等。这里通过SetLength(6, 6)模拟正方形边长。
要点解析
- 接口隔离:
IPrintx仅关注“显示信息”这一行为,符合单一职责原则。 - 继承复用:
Square无需重新编写面积、周长计算,直接复用Rectangle逻辑。 - 重写覆盖:使用
@Override确保printMyWay在子类中被正确重写,体现多态。
以上就是Java接口与继承实现的详细内容,更多关于Java面向对象特性的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









