C#高手请进

创建一个Shape类,此类包含一个名为_color的数据成员(用于存放颜色值)和一个getColor()方法(用于获取颜色值),这个类还包含一个名为getArea()的抽... 创建一个Shape类,此类包含一个名为_color的数据成员(用于存放颜色值)和一个getColor()方法(用于获取颜色值),这个类还包含一个名为getArea()的抽象方法,用这个类创建名为Circle和Square的两个子类,这两个类都包含两个数据成员,即_radius和_sideLen,这些派生类应提供getArea()方法的实现,以计算相应形状的面积。[希望有高手能帮我实现下,最好在每一步的后面,注释每步的功能,方便我学习,高分感谢] 展开
 我来答
宣义坊的大蚂蚁
2008-11-10 · TA获得超过2830个赞
知道大有可为答主
回答量:1617
采纳率:90%
帮助的人:881万
展开全部
首先借用了二楼的框架,添加了成员抽象和域访问控制的内容。
1. 子类中重复的成员应该在父类中进行定义,这里抽象了_radius和_sideLen到父类
2. 域应该是私有的,通过业务情况决定哪些需要开放,开放到哪种程度,这里对于圆形,半径需要开发读写,而边长需要隐藏,方形正好相反。

另外:非抽象类中不能有抽象成员,这个是OO的重要规则,希望遵守以保持程序的合理结构。还有就是_color域没有被赋值的代码,这样getcolor将常返回空,你确认如此?

public abstract class Shape//定义 Shape 类型基类
{
private Color _color;//Shape 的颜色,私有

protected double _radius; //半径,从子类中抽象到父类

protected double _sideLen; //边长,从子类中抽象到父类

public Color GetColor()
{
return _color;//获得 Shape的颜色信息
}

public abstract double getArea();//获得Shap的面积 ,虚方法,可以供子类重写
}

public class Circle : Shape//继承自Shape 类, 圆形类
{
public double Radius//半径属性,可以被外部访问
{
get{return base._radius;}
set{base._radius = value; }
}

public override double getArea()//面积
{
return 2 * Math.PI * base._radius * base._radius;
}
}

public class Square : Shape
{

public double SideLen;//边长
{
get { return base._sideLen;}
set { base._sideLen=value;}
}

public override double getArea()
{
return base._sideLen * base._sideLen;
}
}
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
sunfish_iris
2008-11-10 · TA获得超过583个赞
知道小有建树答主
回答量:611
采纳率:0%
帮助的人:451万
展开全部
public class Shape//定义 Shape 类型基类
{
private Color _color;//Shape 的颜色,私有

public Color GetColor()
{
return _color;//获得 Shape的颜色信息
}

public abstract double getArea();//获得Shap的面积 ,虚方法,可以供子类重写
}

public class Circle : Shape//继承自Shape 类, 圆形类
{
private double _radius;//半径
private double _sideLen;//边长

public override double getArea()//面积 2*pai*R*R
{
return 2 * Math.PI * _radius * _radius;
}
}

public class Square : Shape
{
private double _radius;//半径
private double _sideLen;//边长

public override double getArea()//面积 边长*边长
{
return _sideLen * _sideLen;
}
}

主要就是给了你一个继承的样例,不过在圆形中保留边长,在方形中保留半径似乎不太合理,去掉也行。
还告诉了你怎么重写(override)父类的虚方法。
别的好像没什么了,有的话,就是类字段的封装了,把字段设置为私有,通过公有的方法来访问,不过现在都用属性了,直接用方法来返回一个字段值在java里多,因为java里没有属性,C#都用属性来实现。
提供的信息不多,只能解释这么多了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
weiliming001
2008-11-10 · TA获得超过377个赞
知道小有建树答主
回答量:478
采纳率:0%
帮助的人:346万
展开全部
这么简单的都要别人写?真是懒的出类拔萃了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孙森栎垣
2008-11-10 · TA获得超过1692个赞
知道小有建树答主
回答量:1005
采纳率:0%
帮助的人:374万
展开全部
这么费事才给50分了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式