C#高手请进
创建一个Shape类,此类包含一个名为_color的数据成员(用于存放颜色值)和一个getColor()方法(用于获取颜色值),这个类还包含一个名为getArea()的抽...
创建一个Shape类,此类包含一个名为_color的数据成员(用于存放颜色值)和一个getColor()方法(用于获取颜色值),这个类还包含一个名为getArea()的抽象方法,用这个类创建名为Circle和Square的两个子类,这两个类都包含两个数据成员,即_radius和_sideLen,这些派生类应提供getArea()方法的实现,以计算相应形状的面积。[希望有高手能帮我实现下,最好在每一步的后面,注释每步的功能,方便我学习,高分感谢]
展开
展开全部
首先借用了二楼的框架,添加了成员抽象和域访问控制的内容。
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;
}
}
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 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
展开全部
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#都用属性来实现。
提供的信息不多,只能解释这么多了。
{
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#都用属性来实现。
提供的信息不多,只能解释这么多了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这么简单的都要别人写?真是懒的出类拔萃了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这么费事才给50分了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询