问这个问题之后调用需要输入在VB.NET基类或C#派生类实例的方法对堆栈溢出,笔者获悉,问这个问题的时候,我已经使用了错误的条款。 我曾用“父”,并在那里我应该用“基地”和“导出”,而不是“孩子”。
我一直无法找到差异的一个很好的说明。
这是我所知道的(或想我知道)为止:
一个父类包含的子类。 其中作为一个派生类从基类继承。
它们是相似的,因为孩子(或派生)可以访问的父母(或基地)的属性和方法(在允许的情况)。
他们是不同的,因为你可以参考子类的财产形式Parent.Child.Property
。 虽然你不能做到这一点与派生类。
是什么在应了另一种使用什么样的状况的差异,?
Answer 1:
父母和孩子都比较抽象的关系。 它们被用来描述层次结构,从而可以在各种树木(或有时DAG)的使用。
类继承的树是一个这样的树,因此称他们为父母和孩子是没有错的。
该术语通常用于与其他种类的树木,例如嵌套的GUI控件,目录结构,...
基类和派生仅用于继承,并且因此更精确。 这个术语是首选,因为它是那么模糊。
Answer 2:
父/子在两种情况下使用。 它可以用来描述你提到的(一个“包含”关系Parent.Child.Property
),或者它可能意味着派生类(也称为子类 )。
底线是 - 要了解什么是父/子意味着你必须知道的上下文。
在任何情况下,(与继承封装)的两个概念之间的差异可以被认为是一个“是一个”和“具有”的关系。
Answer 3:
当一个类从基类派生它被称为继承 。 You inherit when you want to add functionality to an existing component, or extend the component.
包含在它被称为半导体封装的父类当一个类是由/引用。 You encapsulate when your (usually parent) object 'uses' components.
从分机-继承与封装 :
当你继承你什么时候封装? 当你想将功能添加到现有的组件您继承。 当你的对象使用“组件您封装。 你继承你的新阶级“是一个”外部组件。 你如果封装新类“有一个”外部组件。
这里是一个链接是需要看看继承和封装在面向对象的编程细节,并讨论其概念是在哪种情况更好。
Answer 4:
衍生于OOP esplicitly定义类型之间多态性的关系:
public class A{
}
public class AB : A{
}
类AB
是从派生的类A
。
父母与子女是抽象的关系definiton,在编程可以得到不同的形状,如:
public class A{
}
public class ParentA{
List<A> children = ...
}
通常使用的Graph
类似的关系
Answer 5:
家长和孩子都与封装的原则OO,而基类和派生与继承的原则来做。
在子类的父类包裹,露出了孩子的唯一的公共方法和有父不能直接访问。
派生类访问的基类的作为被暴露的所有属性,方法和部件protected
或更高的访问修饰符。
Answer 6:
“父”是“基地”和“孩子”的代名词的代名词“派生”,但“父”与“子”是罕见的,而不是非常技术性的(和不健全的很好IMO)。 其他两个术语是“超”和“子”。
Answer 7:
根据你使用的父/子的路上,我想你的意思嵌套类。
class Container
{
class Nested
{
}
}
嵌套类是默认为私有。 这里的目的通常是Nested
会通过使用一个辅助类Container
。 例如, Nested
可以通过在容器中的方法,该方法需要返回多个值中使用。 实例Nested
或Container
将需要另外一个引用来访问任何非静态成员。
其中作为一个派生类从基类继承
class Base
{
}
class Derived : Base
{
}
派生类具有所有的它的基类的功能,并且可以在任何地方使用的碱类都可以使用。 的实例Derived
访问所有的公共和保护的非静态成员。 Base
没有获得任何成员Derived
。 此外, Derived
可以重写的虚拟成员的行为Base
。
Answer 8:
避免术语父/子我只是想提一提,它是可能的嵌套类有它自己的含(“外”)类作为其基类。 我不认为这是人们使用非常的模式,但它允许在语言(C#)。
一个例子:
class MyClass
{
// we choose to make the instance constructor private
MyClass()
{
}
// nested type, private to MyClass, deriving from MyClass
class InnerMyClass : MyClass
{
// ...
}
public static MyClass GetMyClassInstance()
{
return new InnerMyClass();
}
// ...
}
文章来源: What is the difference between a child of a parent class and the derived of a base class in VB.NET or C#?