Appearance
基础-04 面向对象高级
- 分类: 基础题
- 难度: 进阶
本节知识点
- 继承、
super和方法重写 - 权限修饰符
- 多态、向上转型和动态绑定
- 抽象类和抽象方法
- 接口、默认方法和实现类
- 成员内部类、静态内部类和匿名内部类
题目要求
设计一个图形计算程序。
必做
- 定义接口
Shape,包含area()、perimeter()和type()三个方法。 - 实现
Rectangle、Circle和Triangle三个具体图形类。 - 使用
Shape[]保存多个不同图形,并通过统一循环输出每个图形的类型、面积和周长。
拓展(加分,可选)
- 定义抽象类
AbstractShape,实现Shape接口并保存图形名称;让三个图形类继承AbstractShape。 - 使用匿名内部类创建一个只使用一次的特殊图形对象。
建议的核心接口:
java
public interface Shape {
double area();
double perimeter();
String type();
}实现要求
必做
- 接口和三个图形类结构清晰,图形能够计算面积和周长。
- 在主程序中只能通过
Shape类型调用通用方法,不能使用instanceof逐个判断子类再计算。
拓展(加分,可选)
- 三个图形类改为继承
AbstractShape抽象类,子类构造方法使用super(...)初始化父类部分。 - 匿名内部类需要实现接口中的三个方法,并给出实际可计算的结果。
记录本题学习笔记,笔记内容不作其他限制,但开头需要回答本题的全部“必答问题”。
必答问题
- 方法重载和方法重写有什么区别?
- 抽象类和接口分别适合什么场景?
- 多态调用成员时有什么特点?
- 匿名内部类适合解决什么问题?
完成清单
必做:
- [ ]
Shape接口和三个图形类结构清晰 - [ ] 主程序通过统一类型处理图形
- [ ] 学习笔记已先回答本题全部必答问题
拓展(可选,加分):
- [ ]
AbstractShape抽象类和继承关系成立,子类使用super(...)初始化 - [ ] 匿名内部类可以正常运行
