什么是父类的子类和派生基类的VB.NET或C#的区别?(What is the difference

2019-08-01 19:57发布

问这个问题之后调用需要输入在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可以通过在容器中的方法,该方法需要返回多个值中使用。 实例NestedContainer将需要另外一个引用来访问任何非静态成员。

其中作为一个派生类从基类继承

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#?