作者adrianshum (Alien)
看板Programming
标题Re: 透过继承来override static variab?
时间Thu Jul 30 10:36:07 2009
※ 引述《sorryChen (陈扬和)》之铭言:
: 假设我原来有个class ex: car.. 有个static variable 叫 num_of_wheel
: 现在发现我要有很多种car 各有不同的 num_of_wheel.
: (每种车wheel的个数是一样的..)
: 这样透过 继承override num_of_wheel 是一般的做法吗
1) 既然你不同的 car 有不同的 num_of_wheel 就代表那不是 class attribute
(static variable) 了.
2) 每辆车有不同的轮子数, 那num_of_wheel 很明显就是 车子的 attribute 了,
该是 class Car 数面有 num_of_wheel 的 instance attribute
3) 常见的 OOPL, 没法 "override" 一个 variable
4) 一般做法是把 num_of_wheel 作为 Car 的 member attribute, 要是真的
需要有不同类的车 (有时可能靠本身的 attribute 就够表达, 那就不必
滥用继承), 而 每种车都有该种车的轮子数量, 就在各类车子的 subclass
设自己的 num_of_wheel 好了
用别的例子, 比如动物有不同叫声 (半 psuedo code)
abstract class Animal { // 专作继承用的
private String m_voice;
protected Animal(String voice) {
m_voice = voice;
}
public void shout() {
print("SHOUT: " + m_voice);
}
class Duck extends Animal {
public Duck() {
super("Quack");
}
}
class Cat extends Animal {
public Cat() {
super("Meow");
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.155.236.82
※ 编辑: adrianshum 来自: 202.155.236.82 (07/30 10:36)
※ 编辑: adrianshum 来自: 202.155.236.82 (07/30 10:42)