Java接口练习题:实现矩形与正方形类

橘子海
橘子海
发布时间:2026-10-16| 7人浏览过
原创

本文通过具体案例讲解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)模拟正方形边长。

要点解析

  1. 接口隔离:IPrintx仅关注“显示信息”这一行为,符合单一职责原则。
  2. 继承复用:Square无需重新编写面积、周长计算,直接复用Rectangle逻辑。
  3. 重写覆盖:使用@Override确保printMyWay在子类中被正确重写,体现多态。

以上就是Java接口与继承实现的详细内容,更多关于Java面向对象特性的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。