C# 初始化类和继承类之间的区别是什么

C# 初始化类和继承类之间的区别是什么,c#,inheritance,C#,Inheritance,我有三个等级a、B和C,如下所示 public class A { public void add(int i, int k) { } } public class B:A { public void AddInt() { add(1, 2); } } public class C { public void AddInt() { A objA = new A(); objA.add(

我有三个等级a、B和C,如下所示

public class A
{
    public void add(int i, int k)
    {
    }
}
public class B:A
{
    public void AddInt()
    {
        add(1, 2);
    }

}
public class C
{
    public void AddInt()
    {
        A objA = new A();
       objA.add(1, 2);
    }     

}
我们想要访问一个类方法Add,有两种方法

1启动A类,然后访问Add方法

2继承A类,然后访问Add方法


如果这两种方法都提供相同的功能,那么为什么C提供两种方法来实现相同的功能。

这两种方法是可用的,因为您的add方法在类A中是公共的。如果您只想在继承的类中使用它,请将其更改为protected。简单地说,继承使继承类中除了私有属性和方法之外的所有属性和方法都可用。在您的情况下,类B是从类A继承的,类B本身的实例将是您调用方法add-on的实例。在类C中,您只需创建一个类A的实例并在其上调用方法add。如果您阅读和,所有这些概念都会更清晰。

这根本不是关于C,而是关于基本的OOP概念,在本例中,C只是体现、存在和语言

初始化是一个给定类型的实例的创建:在您的案例中是a

第二个例子是a,从给定的类型a派生,并创建派生类型B,就可以访问类的公共/受保护成员


在这种情况下,访问行为是相同的,但其起源完全不同。

将类视为如何构建某些内容的模板或计划。然后,当您使用模板或平面图来构建一座房屋的建筑师平面图,以及根据这些平面图构建的众多房屋中的一座时,我们用来描述此过程的词语是实例化和初始化

您可以实例化对象的一个实例,使用类模板architects plan构建房屋,然后对其进行初始化,以绘制和装饰房屋


继承,指的是完全无关的,在类是如何定义的,使用另一个现有类作为基础或*Base*行,从该行开始定义将扩展基础或基类的新类。当一个类从另一个类继承时,这意味着派生类的实例自动获取父基类中定义的所有内容,而无需在子基类中重新定义

你把人类比作食物。。。对,没有可比性

启动会消耗系统中的一些RAM


继承允许您启用公共代码的可重用性

类是一种类型,充当模板,允许您创建此类型的对象。此类对象的创建也称为实例化。此实例化过程涉及为此对象分配分配内存,然后初始化此对象,即为其字段提供初始值。后者称为初始化

继承是完全不同的。继承是通过从基类(也称为超类)或父类继承现有代码来创建新的类模板。 这个新的派生类也称为子类或子类,用作创建新类型对象的模板

派生类可以修改从其基类继承的行为并扩展其可能性。继承在类之间创建一个关系。子类在继承层次结构中与它们上面的超类是赋值兼容的

启动类和继承类之间有什么区别

首先,您要查找的单词是实例化,而不是初始化

实例化类和继承类之间有什么区别

继承表示两个类之间的一种关系:

《纽约时报》是一种报纸。 长颈鹿是一种动物。 苹果是一种水果。 在每一种情况下,第一种类型都是派生程度更高的类型——它更具体——第二种类型是派生程度较低的类型,即基类型。它更一般。水果比苹果多

在C语言中,当您在两个类之间建立继承关系时,您会得到两件事:

赋值兼容性:在需要基类型表达式的地方,可以使用派生类型更多的表达式。 成员继承:基类的所有方法、事件、索引器、运算符、字段、属性和嵌套类型都自动成为派生类的成员。构造函数和析构函数是不可继承的。 实例化是生成类型的新实例的过程

给你一份今天的《纽约时报》。 来,让我给你一只长颈鹿。 来,我给你一个苹果。 所以在C中:

class Fruit {}
class Apple : Fruit { } // Apple inherits from Fruit
class Program {
  static void Main() {
    Apple apple = new Apple(); // Instantiating a new Apple
  }
}

有意义吗?

你应该重新思考你的例子。返回void的Add方法?为了回答你的问题。。。继承和实例化是完全不同的概念,提供继承和实例化并不是为了实现相同的目的。你我
在不重写整个类的情况下,可以从类中添加更多功能。你实例化一个类来使用它的功能。@HighCore对c来说是个新手,所以只有我问这个问题。你是指初始化还是实例化?@HighCore:好一点。每个人都曾经是初学者。@EricLippert你说得对。对不起,我听不懂,请解释一下simply@Niventh:在第一种情况下,您讨论创建对象并访问其公共成员。在第二种情况下,首先创建派生类型B,在实例化它之后创建新的B,并且能够从B的实例访问类public Add方法,因为它是派生类型。@Tigran,我投了反对票,因为继承根本不是多态性,事实上,过去常说OOP的三大支柱是封装、继承、,和多态性。多态性是等价地处理许多不同事物的能力。除了继承,你还可以从其他方面获得多态性,事实上,可以说它最普遍、最有效的来源是使用接口。谢谢你的长颈鹿,我会珍惜它。你可能想澄清一下,继承的类是基类实例的子集,而实例化的类是上述集合的一个成员。您正在将人类与食物进行比较。。。权利没有比较公共类食人族扩展人类{。。。