Java 带void的方法和构造函数之间的区别

Java 带void的方法和构造函数之间的区别,java,methods,constructor,Java,Methods,Constructor,使用带有void的方法和构造函数有什么区别?例如: public class Time { public void getMethod() { } public Time() { } } 我在哪里使用什么? 多谢各位 构造函数在创建新对象后被调用。通常要进行一些初始化,以准备对象。方法-您可以随时调用它们。 构造函数只能在某个对象上调用一次。方法可以被多次调用。 构造函数不能是静态的,因为它不是逻辑的,static表示它属于类,而不是对象。方法可以是静态

使用带有void的方法和构造函数有什么区别?例如:

public class Time {
    public void getMethod() {

    }

    public Time() {

    }

}
我在哪里使用什么? 多谢各位

构造函数在创建新对象后被调用。通常要进行一些初始化,以准备对象。方法-您可以随时调用它们。 构造函数只能在某个对象上调用一次。方法可以被多次调用。 构造函数不能是静态的,因为它不是逻辑的,static表示它属于类,而不是对象。方法可以是静态的。
“void”只是该方法的返回类型


构造函数没有返回类型。

构造函数用于创建新对象。它的使用导致对新对象的引用的返回,尽管从技术上讲构造函数本身并不返回引用。因此,对于构造函数来说,void将是一个毫无意义的关键字。它用作对象o=新对象参数SIFAPLICABLE

另一方面,带有void return参数的方法不返回任何内容,但通常会更改对象内的内部数据,或者更改传递给它的一个对象的频率较低;否则调用它将毫无意义

总结 调用构造函数将导致一个新对象并返回对该对象的引用 对现有对象调用非静态方法来执行某些工作;它一无所获
构造函数是属于与其创建关联的类的方法。使用对象a=新对象声明对象时;这是调用构造函数的地方

您应该使用构造函数来组织类其余部分所需的任何数据。例如,如果您正在创建一个Time类,则Time构造函数可能会获取当前时间并将其设置在变量中以供以后使用


其他方法就是这样。它们是为类执行某些计算或工作的方法。例如,您可能有一个方法,该方法接受日期并返回输入日期和当前日期之间的天数。

一个void方法特别不返回任何数据或对象。实际上,构造函数不返回任何内容

从硬件的角度来看,它初始化由调用方的对象声明在构造时分配的信息;Doughty在下面提供了一个广泛的概述

为了使用方法getMethod,您必须创建类Time的实例,该实例是通过构造由其构造函数定义的对象来完成的

时间-当前时间//对象的声明只为其分配内存空间 currentTime=新时间//构造一个时间实例 //并将对象引用指定给变量currentTime

然后使用返回void的方法:

currentTime.getMethod


只需调用该方法即可执行其任务。它不返回数据或对象,但控制返回到调用它的位置。

当被构造中的对象调用时,大多数对象的方法将以与从其他任何地方调用时相同的方式被调用。构造函数是不同的。构造函数是一种特殊的void方法,不能直接从普通代码调用。相反,所有构造函数调用必须采用以下两种形式之一:

在一个构造函数的最开始处对当前类或超类中的另一个构造函数进行的调用

系统生成的调用,作为为x=new Foo123;给定的以下序列伪代码的一部分:


请注意,编译器可以生成代码,该代码将首先在不运行构造函数的情况下创建Foo类型的对象,然后对新创建的类型调用构造函数,即使没有其他类型的操作都是合法的。

对已创建的对象调用方法。使用新时间调用构造函数并创建对象。构造函数返回新对象,因为这样的void参数将是疯狂的。另一方面,一个带有void的方法不会返回任何东西。您有什么疑问吗?我假设您知道在创建对象时使用构造函数。@RichardTingle在字节码级别,构造函数总是使用this参数并返回void-factly V for void+1构造函数还可以设置最终字段,并且必须调用父构造函数。构造函数实际上不返回新对象;如果这样做,链接到父级构造函数的派生类将接收父级类型的对象,而不是它自己的对象。构造函数设置一个新创建的空白对象,并将其传递给它;然而,与大多数方法不同的是,构造函数只能在一个对象上调用,而该对象自创建以来从未以任何方式被触及过。@supercat,事实上,我试图在我的技术部分中阐明这一点。我的观点是,它是在返回新对象的上下文中被调用的。我的观点是,基类方法没有正常的方法来生成它一无所知的派生类的对象,但是当链接基类构造函数返回时,它的调用者将 派生类对象。让调用构造函数的代码生成对象是实现这一点的常用方法,尽管不是唯一的方法。
// "Magical" system routine to create an object without running constructors
Foo temp = InternalSystemMagic.CreateNewObject([foo's type]); 
temp.Foo_constructor(p1); // Now invoke the constructor
x = temp; // Note that if the constructor throws, x will not get set.