我正在向我的朋友解释OOP。我无法回答这个问题。(我有多可耻?
我只是想逃避,因为OOP描绘了现实世界。在现实世界中,父母可以容纳孩子,但孩子不能容纳父母。OOP也是如此。我知道它很愚蠢。:P
class Parent
{
int prop1;
int prop2;
}
class Child : Parent // class Child extends Parent (in case of Java Lang.)
{
int prop3;
int prop4;
public static void Main()
{
Child aChild = new Child();
Parent aParent = new Parent();
aParent = aChild;// is perfectly valid.
aChild = aParent;// is not valid. Why??
}
}
为什么此陈述无效?
aChild = aParent;// is not valid. Why??
因为aChild的成员是aParent成员的超集。那为什么孩子不能容纳父母。
正是因为aChild是aParent功能的超集。你可以写:
class Fox : Animal
因为每只狐狸都是动物。但是另一种方式并不总是正确的(并非每个动物都是狐狸)。
同样,您似乎混合了OOP。这不是父子关系,因为不涉及构图/树。这是祖先/后代继承关系。
继承是“类型的”而不是“包含”的。因此,它是狐狸,是动物的一种,在您的情况下,听起来不对-“孩子是父母的一种”?类的命名是造成混乱的根源;)。
class Animal {}
class Fox : Animal {}
class Fish : Animal {}
Animal a = new Fox(); // ok!
Animal b = new Fish(); // ok!
Fox f = b; // obviously no!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句