Skip to content

基础-04 面向对象高级 ​

  • 分类: 基础题
  • 难度: 进阶

本节知识点 ​

  • 继承、super 和方法重写
  • 权限修饰符
  • 多态、向上转型和动态绑定
  • 抽象类和抽象方法
  • 接口、默认方法和实现类
  • 成员内部类、静态内部类和匿名内部类

题目要求 ​

设计一个图形计算程序。

必做 ​

  1. 定义接口 Shape,包含 area()、perimeter() 和 type() 三个方法。
  2. 实现 Rectangle、Circle 和 Triangle 三个具体图形类。
  3. 使用 Shape[] 保存多个不同图形,并通过统一循环输出每个图形的类型、面积和周长。

拓展(加分,可选) ​

  1. 定义抽象类 AbstractShape,实现 Shape 接口并保存图形名称;让三个图形类继承 AbstractShape。
  2. 使用匿名内部类创建一个只使用一次的特殊图形对象。

建议的核心接口:

java
public interface Shape {
    double area();
    double perimeter();
    String type();
}

实现要求 ​

必做 ​

  • 接口和三个图形类结构清晰,图形能够计算面积和周长。
  • 在主程序中只能通过 Shape 类型调用通用方法,不能使用 instanceof 逐个判断子类再计算。

拓展(加分,可选) ​

  • 三个图形类改为继承 AbstractShape 抽象类,子类构造方法使用 super(...) 初始化父类部分。
  • 匿名内部类需要实现接口中的三个方法,并给出实际可计算的结果。

记录本题学习笔记,笔记内容不作其他限制,但开头需要回答本题的全部“必答问题”。

必答问题 ​

  1. 方法重载和方法重写有什么区别?
  2. 抽象类和接口分别适合什么场景?
  3. 多态调用成员时有什么特点?
  4. 匿名内部类适合解决什么问题?

完成清单 ​

必做:

  • [ ] Shape 接口和三个图形类结构清晰
  • [ ] 主程序通过统一类型处理图形
  • [ ] 学习笔记已先回答本题全部必答问题

拓展(可选,加分):

  • [ ] AbstractShape 抽象类和继承关系成立,子类使用 super(...) 初始化
  • [ ] 匿名内部类可以正常运行

Released under the MIT License.