15

Java 允许创建具有类名和 void 类型的方法(如 void 构造函数)。构造函数没有类型,它执行构造函数的功能。但是有没有上面提到的那种方法的用法。你能举出这些用法的例子吗

示例代码:

//my class
class MyClass{

    //constructor
    public MyClass(.....){
    }

    //What is the use of the below method
    public void MyClass(....){
    }
}
4

5 回答 5

15

回答你的问题:,它没有特殊用途。事实上,这是反直觉和令人困惑的。一些编译器甚至会生成警告"This method has a constructor name"

但是因为从技术上讲它可能不是编译错误,所以我建议远离它。有几种不同的方法名称可以更具描述性并用于相同的目的。

于 2013-08-28T06:35:27.717 回答
2

Yes, A fresher to Java may confuse with this. The constructor cannot have a return type. But some people misunderstand that the "no return type" and "void" are some what equal but it is not. Constructor is a different story and the method that has the class name and any other return type (void, String, int, .......) is different. But it is more confusing.

于 2013-08-28T06:40:18.297 回答
2

否 它没有特殊用途,它会被视为与类中的其他方法类似。

下面的文章值得一读:

http://docs.oracle.com/javase/tutorial/java/javaOO/methods.html

如果方法名与类名相同且没有返回类型,则constructor在 oops 中有特殊用途。

通过将此类名称保留为方法,只会造成混乱和代码可读性。

下面的链接可能会帮助你为什么可读性很重要:http: //java.dzone.com/articles/why-code-readability-matters

于 2013-08-28T07:11:56.243 回答
2

对于那些名称与类名相同的方法,没有任何明智的用法。

  • 这是一种风格违规。根据官方 Java 风格指南,Java 方法的名称应该以小写字母开头。

  • 它令人困惑,因为它表面上看起来像一个构造函数。

  • 这是令人困惑的,因为当您使用这样的方法时,看起来您使用的类名不正确。

  • 由于类名与方法名的歧义,这可能会导致意外行为和/或意外编译错误。


为什么java允许具有类名和类型void的方法?

基本上是因为 Java 语言不强制执行标识符样式规则。(IMO,如果它确实执行规则会更好......但这个决定是很久以前做出的,出于兼容性原因无法更改。)

于 2013-08-28T06:45:20.897 回答
1

用法与任何其他方法相同。并且返回类型不必是void. 这通常会令人困惑,但将方法命名为与类名相同是完全合法的。它通常会引起比你想要的更多的混乱,但这是一种合法的行为。除了任何其他类方法之外,这些方法没有特殊属性。

于 2013-08-28T06:34:20.560 回答