无法理解需要使过程.java抽象

2022-09-04 22:54:59

我不经意地浏览了Java核心类的源代码。我发现该文件是一个类。当我浏览代码时,没有函数有定义。这是否意味着它应该被声明为 .这背后有什么故意的原因吗?有人能帮助我理解这种设计的必要性吗?Process.javapublic abstractInterface

代码链接


答案 1

Process是抽象的,因为它可能在每个操作系统上具有不同的实现。应用程序开发人员不实现此抽象类;它是作为Java运行时的一部分实现的。

由于所有方法都是抽象的,因此可以将其声明为接口,但这会使该类无法在将来发展。例如,一旦在公共 API 中声明了新方法,就不应将其添加到接口中,因为这样任何现有实现都将不兼容。相反,可以很容易地将新的(具体)方法添加到抽象类中。

的实例由运行时通过类方法或从实例创建。应用程序通常不会使用运算符直接创建(具体子类)的实例。ProcessRuntimeProcessBuildernew


答案 2

我怀疑关键的区别在于,你可以随心所欲地做很多,但你只能有一个,无论是抽象的还是其他的。implementinterfaceextendclass

因此,进行抽象可以确保,如果您实际上决定从头开始创建一个(即不是从系统提供的工厂创建,这是正常路由),您将无法将功能放在它的父类中。这对我有什么帮助,我不确定。Process

也许这是一个安全的事情,因为进程应该由操作系统创建和拥有。它最好阻止你自己制作它们。

添加

在内心深处,我认为它不是界面的原因是历史性的。请记住,从年份点开始,接口就是您实现的东西,而不是对象个性的一个方面的定义。这个概念是在很久以后才形成的。Processjava.lang

请注意,自JDK 1.0以来一直存在,而许多更有用的接口来得很晚,例如,该接口直到JDK 1.4才出现。我认为有一个范式转变,从对象是主要的,接口是真正有用的,而接口是所有和结束的,而对象只是实现。ProcessCharSequence

Process因此,这将是在当时创建的旧类之一,当时a是一个真正的物体,并且可能驾驶着奥迪Quattro,而不是一些模糊的名义上的namby-pamby瘴气的东西,它有一些方法,看起来有点像这样。Process


推荐