Oop 重写访问器或在构造函数中赋值
我有一个关于面向对象编程的问题。 如果有一个属性在子类中具有不同的值。它应该在超类中创建一个抽象访问器,然后在子类中重写它。或者在基类中创建一个受保护的实例变量,并在子类构造函数中指定默认值 让我们看看代码示例代码: 选择1:Oop 重写访问器或在构造函数中赋值,oop,overriding,accessor,Oop,Overriding,Accessor,我有一个关于面向对象编程的问题。 如果有一个属性在子类中具有不同的值。它应该在超类中创建一个抽象访问器,然后在子类中重写它。或者在基类中创建一个受保护的实例变量,并在子类构造函数中指定默认值 让我们看看代码示例代码: 选择1: class BaseClass { public abstract int GetFoo(); } class SubClass { public int GetFoo() { return -1; } } 选择2: class
class BaseClass {
public abstract int GetFoo();
}
class SubClass {
public int GetFoo() {
return -1;
}
}
选择2:
class BaseClass {
protected int _foo;
public int GetFoo() {
return _foo;
}
}
class SubClass {
public SubClass() {
_foo = -1;
}
}
或者有什么想法?我会选择第一种方法,即提供一个getter,它可以在派生类中重写以提供不同的值,而不是在我的类中创建受保护的成员,这些成员也是包私有的,并且违反了封装原则