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

时间:2013-08-28 06:32:19

标签: java

Java允许创建具有类名称并且类型为void的方法(类似于void构造函数)。构造函数没有类型,它执行构造函数的功能。但是上面提到的方法是否有任何用法。你能举例说明那些用法吗?

示例代码:

//my class
class MyClass{

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

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

5 个答案:

答案 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。它通常会令人困惑,但命名方法与类名相同是完全合法的。它通常会导致您想要的更多混乱,但这是一种合法行为。除了任何其他类方法之外,这些方法没有特殊属性。