class Program
{
interface I1
{
void F1();
}
interface I2
{
void F2();
} //2 interfaces
abstract class b1 : I1
{
abstract public void F1();
}
private class d1 : b1
{
public override void F1()
{
Console.Write("Inside D1:b1.F1");
//I want to call my method() here
MyMethod();
}
}
private class d2 : b1
{
public override void F1()
{
Console.Write("Inside d2:b1.F1");
//I want to call my method() here
MyMethod();
}
}
private class ImeplementI2_1 : I2
{
public void F2()
{
//Implementation
Console.Write("Inside b_1:b_1.F2");
//I want to call my method() here
MyMethod();
}
}
private class ImeplementI2_2 : I2
{
public void F2()
{
//Implementation
Console.Write("Inside b_1:b_1.F2");
//I want to call my method() here
MyMethod();
}
}
void MyMethod()
{
Console.WriteLine("Printmenow");
}
static void Main(string[] args)
{
I1 interface1;
if (args.Length > 0)
{
interface1 = new d1();
}
else
{
interface1 = new d2();
}
interface1.F1();
//I want to call my method() here
MyMethod();
}
}
哪里最好实现MyMethod()?我有2个接口有相同的方法实现不同。所以我想到了它,似乎我只能在该课程中使用静态方法让每个人都开心。任何建议或更好的解决方案
答案 0 :(得分:0)
添加另一个界面作为这两个
的基础界面var studentDetails = [];
for (var id in studentIds) {
var studentDetail = {}; // this will be a single student
var marks = [];
if (studentIds.hasOwnProperty(id)) {
for (var mark in studentMarks) {
if (studentMarks.hasOwnProperty(mark) && mark.id === id) {
studentDetail.id = id;
marks.push(mark.marks);
}
}
studentDetail.marks = marks;
}
studentDetails.push(studentDetail);
}
$scope.studentDetails = studentDetails;
如果您想访问MyMethod of Program类,您可以做两件事:
1)只需将其声明为静态
2)将其作为代表传递并在您的课程中调用
答案 1 :(得分:0)
我是否理解正确的方法d1.F1中你要调用名为MyMethod()的方法,而在d2.F1中你也想要调用名为MyMethod()的相同方法。
您没有指定MyMethod()属于哪个类,但显然它是d1和d2都可以调用的内容。除此之外,他们也称同样的MyMethod。我想你应该将MyMethod放在d1和d2的公共超类中,在你的情况下它们将是b1。
你能说:“每个b1都有相同的MyMethod()吗?那么它肯定属于b1
考虑类Shape和子类,如矩形,椭圆形和子类,如方形和圆形。
如果你说每个Shape都有一个Point我们称之为Shape的位置,那么GetPosition绝对是Shape的函数。
但是,尽管每个Shape都有一个Area,但计算矩形区域的方式与圆的面积非常不同。 GetArea()是一个典型的函数示例,它可以作为接口中的位置,也可以作为Shape的抽象函数。
答案 2 :(得分:-1)
你是非常正确的,如果你有一个特定的方法,你已经写过你想要从任何给定的类访问,并且不需要任何对象实例来存储任何状态那么你想要一个public static
方法。在您的示例中,它将工作以使其在Program
内,尽管在任何非玩具示例中,我强烈建议您不要将所有这些嵌套在Program
类中。所有这些类型都应该是顶级类型,MyMethod
应该是某种新类型的静态方法,表示执行此类操作的责任。