Object 为什么类只隐式地从对象类派生?

Object 为什么类只隐式地从对象类派生?,object,language-agnostic,programming-languages,Object,Language Agnostic,Programming Languages,我没有任何理由反对为什么我们只需要一个通用类。然而,为什么我们没有两个通用类,比如一个对象类和一个反对象类。 在自然界和科学中,我们发现了类似二元性的能量&暗能量的概念;男性和女性;加减;乘除;电子与质子;积分与求导;在集合论中。二元论的例子太多了,它本身就是一种哲学。在编程本身中,我们看到反模式,它帮助我们执行工作,而不是我们如何使用设计模式。 我们称之为面向对象编程。这是一个限制因素,还是我在理解编程语言的形成过程中缺少了一些基本的东西 编辑: 我不确定,但这种二元性概念的有用性可能在于创建

我没有任何理由反对为什么我们只需要一个通用类。然而,为什么我们没有两个通用类,比如一个对象类和一个反对象类。 在自然界和科学中,我们发现了类似二元性的能量&暗能量的概念;男性和女性;加减;乘除;电子与质子;积分与求导;在集合论中。二元论的例子太多了,它本身就是一种哲学。在编程本身中,我们看到反模式,它帮助我们执行工作,而不是我们如何使用设计模式。 我们称之为面向对象编程。这是一个限制因素,还是我在理解编程语言的形成过程中缺少了一些基本的东西

编辑: 我不确定,但这种二元性概念的有用性可能在于创建垃圾收集器,垃圾收集器创建反对象,反对象与自由或松散对象结合,以自毁,从而释放内存。或者可能是反对象与对象一起工作来创建一种自我修改的编程语言——它允许我们创建一个安全的自我修改代码,使用遗传编程进行进化计算,隐藏代码以防止逆向工程。
我已经把这个问题转移到Stack Exchange的计算机科学网站上,因为这被认为是离题的。如果你想评论/回答这个问题,请用这个词。

在自然界中,如果一个家庭中有两个完全不同的孩子,他们的父母仍然是相同的

你所举的所有例子都属于同一类。例如,男性和女性属于智人的范畴。加号和减号属于运算符类别

在OOPS中也有两种类型。引用类型和值类型,但它们都属于对象


你的建议也很好。但让我们在宇宙中接受你的建议。仍然会有一个
Super_类
包含您的对象和反对象类。所以它必须停在某个地方,在OOPS
中,object
就是它停在的那个类。

在自然界中,如果一个家庭中有两个完全不同和对立的孩子,他们仍然有共同的父母

你所举的所有例子都属于同一类。例如,男性和女性属于智人的范畴。加号和减号属于运算符类别

在OOPS中也有两种类型。引用类型和值类型,但它们都属于对象


你的建议也很好。但让我们在宇宙中接受你的建议。仍然会有一个
Super_类
包含您的对象和反对象类。因此它必须停在某个地方,在OOPS
中,object
就是它停的那个类。

继承树通常(就像在C#中一样)是一棵树,只有一个根,原因有很多,这一切似乎都会导致一个大的根:

  • 如果有多个根,就没有办法指定“任何类型的对象”(除了像C++的
    void*
    之类的东西,这会很可怕,因为它抛弃了任何“类型”的概念)
  • 即使是“任何类型的对象”的想法也失去了一些用处,因为你不能再保证你将要接受的对象的任何东西。你怎么说“所有对象都有属性a、b和c”,让程序实际使用它们?您需要一个所有接口都实现的接口…然后,该接口成为根类型
  • 如果GC语言不能收集所管理的每种类型的对象,那么它们将毫无用处。哎呀,又是“任何类型的对象”了
总之,将一种类型作为层次结构的根更简单。它允许您订立适用于系统中每个对象的契约/保证/等等,并且对希望能够以通用方式处理对象的代码提出更少的要求

C++具有多个根类型,因为(1)C++允许多重继承,所以对象可以弥补继承树之间的差距;(2) 它有模板(比泛型更能接受任何类型的对象);(3) 它可以通过

void*
这样的方式完全抛弃和回避任何“类型”的概念;(4)它不为您提供管理和收集对象的功能


C#不想要多重继承和模板的所有复杂性,它想要垃圾收集。

继承树通常(就像C#)是一棵树,只有一个根,原因有很多,这一切似乎都导致了一个大的根:

  • 如果有多个根,就没有办法指定“任何类型的对象”(除了像C++的
    void*
    之类的东西,这会很可怕,因为它抛弃了任何“类型”的概念)
  • 即使是“任何类型的对象”的想法也失去了一些用处,因为你不能再保证你将要接受的对象的任何东西。你怎么说“所有对象都有属性a、b和c”,让程序实际使用它们?您需要一个所有接口都实现的接口…然后,该接口成为根类型
  • 如果GC语言不能收集所管理的每种类型的对象,那么它们将毫无用处。哎呀,又是“任何类型的对象”了
总之,将一种类型作为层次结构的根更简单。它允许您订立适用于系统中每个对象的契约/保证/等等,并且对希望能够以通用方式处理对象的代码提出更少的要求

C++具有多个根类型,因为(1)C++允许多重继承,所以对象可以弥补继承树之间的差距;(2) 它有模板(比泛型更能接受任何类型的对象);(3) 它可以播放光盘