1. 项目背景与核心概念
这个PTA编程题目看似简单,实际上包含了面向对象编程中两个最重要的概念:继承和多态。作为重庆大学计算机专业的学生作业,它很好地体现了从理论到实践的过渡。我在实际教学中发现,很多同学在完成这类题目时,往往只关注代码能否通过测试用例,而忽略了理解背后的设计思想。
题目要求我们建立水果(Fruit)和香蕉(Banana)的类关系,这实际上是一个经典的"is-a"关系案例。香蕉是一种水果,所以Banana类应该继承自Fruit类。这种关系在现实世界中非常直观,但在编程实现时却有几个关键点需要注意。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 类的设计与继承实现
2.1 基类Fruit的设计
首先我们需要设计基类Fruit。根据常见的编程规范,水果类应该包含以下基本属性和方法:
python复制class Fruit:
def __init__(self, name, color):
self.name = name
self.color = color
def get_name(self):
return self.name
def get_color(self):
return self.color
def __str__(self):
return f"{self.color} {self.name}"
这里有几个设计考量:
- 将name和color作为构造函数的参数,因为所有水果都有这两个基本属性
- 提供了getter方法而不是直接访问属性,这符合封装原则
- 重写了__str__方法,便于输出对象信息
2.2 派生类Banana的实现
Banana类继承自Fruit,但需要添加香蕉特有的属性和行为:
python复制class Banana(Fruit):
def __init__(self, name, color, length):
super().__init__(name, color)
self.length = length
def get_length(self):
