Java允许创建具有类名称并且类型为void的方法(类似于void构造函数)。构造函数没有类型,它执行构造函数的功能。但是上面提到的方法是否有任何用法。你能举例说明那些用法吗?
示例代码:
//my class
class MyClass{
//constructor
public MyClass(.....){
}
//What is the use of the below method
public void MyClass(....){
}
}
答案 0 :(得分:11)
要回答您的问题:否,它没有特殊用途。事实上,这是反直觉和混乱。有些编译器甚至会生成警告“此方法具有构造函数名称”。
但是因为在技术上它可能不是编译错误,所以我建议远离它。有几种不同的方法名称可以更具描述性,并起到同样的作用。
答案 1 :(得分:2)
是的,对Java更新鲜可能会与此混淆。构造函数不能具有返回类型。但是有些人误解了“无回报类型”和“无效”有些相同,但事实并非如此。构造函数是一个不同的故事,具有类名和任何其他返回类型(void,String,int,.......)的方法是不同的。但它更令人困惑。
答案 2 :(得分:2)
对于名称与类名相同的方法,没有明智的用法。
这是违反风格的行为。根据官方Java样式指南,Java方法的名称应以小写字母开头。
令人困惑,因为它看起来像一个构造函数。
这很令人困惑,因为当您使用这样的方法时,您似乎错误地使用了类名。
由于类名与方法名歧义,这可能会导致意外行为和/或意外编译错误。
为什么java允许具有类名和类型为void的方法?
基本上是因为Java语言不强制执行标识符样式规则。 (国际海事组织,如果它确实执行规则会更好......但是很久以前做出了决定,并且出于兼容性原因无法改变。)
答案 3 :(得分:2)
否它没有特殊用途,它将被视为与类中的其他方法类似。
值得阅读以下文章:
http://docs.oracle.com/javase/tutorial/java/javaOO/methods.html
如果方法名称与类名相同且没有返回类型,则称为constructor
,它在oops中有特殊用法。
通过将这些名称保留为方法,它只会产生混淆和代码可读性。
以下链接可能会帮助您解释为什么可读性很重要: http://java.dzone.com/articles/why-code-readability-matters
答案 4 :(得分:1)
用法与任何其他方法的用法相同。返回类型不必是void
。它通常会令人困惑,但命名方法与类名相同是完全合法的。它通常会导致您想要的更多混乱,但这是一种合法行为。除了任何其他类方法之外,这些方法没有特殊属性。