nck*_*brz 20 java methods constructor
我刚开始用Java编程.在谈论方法和构造函数时,我们使用的文本缺乏.我不确定方法或构造函数究竟是什么以及每个方法的唯一性.有人可以帮我定义它们并区分它们吗?
rge*_*man 54
构造函数和方法之间的重要区别在于构造函数初始化使用new运算符创建的对象,而方法对已存在的对象执行操作.
构造函数不能直接调用; 当new关键字创建对象时,它们会被隐式调用.可以直接在已创建的对象上调用方法new.
构造函数和方法的定义在代码中看起来类似.它们可以带参数,它们可以有修饰符(例如public),并且它们在大括号中有方法体.
必须使用与类名相同的名称命名构造函数.它们不能返回任何东西,甚至void(对象本身就是隐式返回).
必须声明方法返回一些东西,尽管它可以void.
主要区别在于
1. 构造函数用于初始化对象的状态,其中方法暴露对象的行为.
2. 构造函数必须不具有返回类型,其中方法必须具有返回类型.
3. 构造函数名称与类名相同,其中方法可能是也可能不是同一个类名.
4. 构造函数隐式调用方法显式调用的位置.
5. 构造函数编译器提供默认构造函数,而方法编译器不提供.
其他教师和助教偶尔会告诉我,构造者是专门的方法.我一直认为在Java构造函数中并不是专门的方法.
如果构造函数完全是方法,我希望它们具有与方法相同的能力.他们至少在很多方面与他们不同的方式相似.
必须使用new运算符调用构造函数,而不能使用new运算符调用方法.相关:可能不会按名称调用构造函数,而必须按名称调用方法.
构造函数可能没有返回类型,而方法必须具有返回类型.
如果方法与类具有相同的名称,则它必须具有返回类型.否则,它是一个构造函数.您可以在同一个类定义中具有两个不同处理的MyClass()签名的事实应该说服所有构造函数和方法是不同的实体:
public class MyClass {
public MyClass() { } // constructor
public String MyClass() { return "MyClass() method"; } // method
}
Run Code Online (Sandbox Code Playgroud)构造函数可能初始化实例常量,而方法可能不会.
当继承公共和受保护的方法时,不会继承公共和受保护的构造函数.
构造函数可以调用超类或同一类的构造函数,而方法可能不调用super()或this().
它们都有参数列表.
它们都有代码块,当该块直接调用(方法)或通过new(构造函数)调用时,将执行这些代码块.
构造者可以是:私人的,受保护的,公共的.
方法可以是:private,protected,public,abstract,static,final,synchronized,native, strictfp.
数据字段可以是:private,protected,public,static,final,transient,volatile.
在Java中,构造函数的形式和功能与方法明显不同.因此,将它们称为专用方法实际上使新程序员更难以了解差异.它们与类似的不同,并且学习它们,因为不同的实体在Java中是至关重要的.
我确实认识到Java在这方面与其他语言不同,即C++,其中专门方法的概念起源于语言规则并受其支持.但是,在Java中,构造函数根本不是方法,更不用说专门的方法.
甚至javadoc也认识到构造函数和方法之间的差异大于相似之处; 并为构造函数提供单独的部分.