【发布时间】:2016-04-13 01:55:03
【问题描述】:
当我要访问这些方法时,我想hide the parent class method for the the child class object. My Circle 对象向我显示两个方法:
这里objShape是抽象类Shape类的对象。
我想隐藏显示在第二张图片上的方法。
这里 Circle 类扩展了 Oval 类,Oval 类扩展了 Shape 类。
形状类编码
abstract public class Shape
{
public abstract double Area(double dNum1 = 0.0, double dNum2 = 0.0);
public abstract double Perimeter(double dNum1 = 0.0, double dNum2 = 0.0);
}
椭圆类编码
class Oval : Shape
{
public override double Area(double dNum1 = 0.0, double dNum2 = 0.0)
{
double dAns = Math.PI * dNum1 * dNum2;
return dAns;
}
public override double Perimeter(double dNum1 = 0.0, double dNum2 = 0.0)
{
double dTmp1, dTmp2, dAns;
dTmp1 = 2 * (dNum1 * dNum1);
dTmp2 = 2 * (dNum2 * dNum2);
dAns = (Math.PI / 2) * Math.Sqrt(dTmp1 + dTmp2);
return dAns;
}
}
圈类代码
class Circle : Oval
{
public double Area(double dNum1)
{
double dResult = base.Area(dNum1, dNum1);
return dResult;
}
public double Perimeter(double dNum1)
{
double dAns = base.Perimeter(dNum1, dNum1);
return dAns;
}
}
那么,这里如何隐藏对 Circle 类对象的 Oval 类方法的直接访问。在第二张图片中,它显示了建议,我可以使用该方法,但我不想要该建议,也不想将该方法与 Circle 类对象一起使用。
【问题讨论】:
-
@un-lucky 好的,但是我该如何实现呢?我还想为 Oval 类创建对象。
-
@un-lucky,我还必须为 Circle 类扩展 Oval 类。
-
@un-lucky - 密封的课程不是去这里的方式。
-
显然你的接口/抽象类被破坏了。当有形状应该有一个基于两个参数的区域时,抽象中应该根本没有这样的方法,或者你的圆应该派生自其他类。