我有一个基类,所有继承的类都以相同的方式使用“mock”方法
protected class User{
protected void PrepareUser()
{
// init
}
protected abstract Display();
}
public class Person: User{
// override display
}
我的问题是我当然不能在非抽象类中声明抽象方法,所以正确的OOP方法是以相同的方式触发具有Init方法的基类并强制继承的类重新实现Display方法?
答案 0 :(得分:1)
首先,你可以有一个抽象类,方法实现如下:
protected abstract class User
{
protected void PrepareUser()
{
// init
}
protected abstract void Display();
}
其次,如果不在其他类中,则不能拥有protected class
。此外,基类不能比子类更容易访问。完整的工作代码应该是:
namespace MyNamespace
{
public class XXX
{
protected abstract class User
{
protected void PrepareUser()
{
// init
}
protected abstract void Display();
}
protected class Person : User
{
protected override void Display()
{
//something
}
}
}
}
答案 1 :(得分:0)
...那么,使用Init方法触发基类的正确OOP方法总是以相同的方式触发并强制继承的类重新实现Display方法吗?
抽象类是正确的方法。 E.g:
protected abstract class User{
protected void PrepareUser()
{
// init
}
protected abstract void Display();
}
public class Person: User{
protected override void Display()
{
// ...implementation...
}
}
附注:如果User
将成为public
,您还需要Person
public
。
答案 2 :(得分:0)
public abstract class User
{
protected void PrepareUser()
{
// init
}
protected abstract void Display();
}
public class Person : User
{
// override display
protected override void Display()
{
// Do Stuff
}
}
上述内容是否符合您的要求?