Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java定义方法_Java - Fatal编程技术网

用Java定义方法

用Java定义方法,java,Java,我刚收到一份作业,由于以下方法定义,该作业被标记下来: static String[] getDayData (int day) { 有人告诉我: 您的函数中应该始终有定义者public/private/protected 尽管我不同意Java中的函数部分,但它明确指出: 方法声明所需的唯一元素是方法的返回类型、名称、一对括号、(),以及大括号之间的主体、{} 那么谁对此有什么想法呢?我是否应该总是在方法的定义中包含修饰符?从表面上看,这种说法肯定是错误的。如果您想要声明的是包私有方法,那么这

我刚收到一份作业,由于以下方法定义,该作业被标记下来:

static String[] getDayData (int day) {
有人告诉我:

您的函数中应该始终有定义者
public
/
private
/
protected

尽管我不同意Java中的函数部分,但它明确指出:

方法声明所需的唯一元素是方法的返回类型、名称、一对括号、
()
,以及大括号之间的主体、
{}


那么谁对此有什么想法呢?我是否应该总是在方法的定义中包含修饰符?

从表面上看,这种说法肯定是错误的。如果您想要声明的是包私有方法,那么这是唯一的方法。在不改变其含义的情况下,不能将该声明添加为访问修饰符

你的老师对他的评分标准到底有什么想法是一个独立的问题,但根据我自己的教学经验,我不能同意这种说法。教授Java 101绝对包括所有方法访问级别


另一方面,我也不同意他任意使用“功能”而不是官方术语“方法”。在我的书中,这只是糟糕的教学,根本原因是对Java的无知还是误导的教学法,我们无法从我们掌握的信息中辨别出来。而且。。。他真的用了“定义者”这个词吗?这个术语甚至在Java或其他地方都不存在。

虽然这可能被认为是一个风格问题,并且可以根据这个问题对您进行评分,但使用默认可见性的方法和类是有价值的。Java中的默认可见性是包级别的可见性,请参见Java教程的这一部分。我倾向于在编写库时使用它。有一些函数和一些字段,我想从库中的其他类中访问它们,但它们仅用于内部使用。当用其他语言(如php)编写时,我发现自己缺少这种可见性,而是使用声明为公共函数的注释,说它们“仅限内部”。使用此默认级别时,需要注意的是,子包被视为不同的包,无法查看具有此可见性级别的函数


这不太可能让你重新获得分数,因为你可能打算在软件包之外使用它。

在团队中编程时,并不是每个人都熟悉你使用的语言。Java语言规范不需要类成员的访问修饰符,但是如果您明确地声明它,每个人都会清楚地知道您打算做什么。当然,唯一的例外是提到的Marko Topolnik案例,您需要一个包私有方法。尽管如此,我相信很少有通用的设计模式使用这些。我甚至想不出需要它们的逻辑情况。

Java字段和方法有四个可见性级别,每个级别都比最后一个级别“更宽”:

  • private
    -仅在此类中可见
  • “default”(即没有修饰符)-对该类和同一包中的其他类可见
  • protected
    -对此类、同一包中的其他类以及其他包中此类的子类可见
  • public
    -随处可见
  • 因此,有一个不带修饰符的方法是有效的。我见过的一些编码样式使用如下注释使包可见性更加明确

    /* package-private */ static int foo() { ... }
    

    这是个人喜好。它在Java中默认为protected,因此不是显式必需的。默认为protected?你确定吗?这被认为是良好的做法,因为它避免了混乱,正如贝拉·维泽所说的那样。如果你不知道默认设置是什么,你怎么知道你做了正确的事情呢?即“默认设置为受保护”=>不正确,默认设置为“默认设置”,即受保护+从同一软件包访问。极为糟糕的做法IMO as没有隐藏实施细节a强烈受保护/保密。在您被告知的内容中包含“始终”一词几乎总是意味着这是不对的…+1老师不正确。也看看这张表。+1“老师”是个白痴。我们不要太快地评判那个老师。如果这是一门初级课程,他的建议中可能会忽略细节。“总是”这个词选得不好,但也许老师只是想提出一个我认为是合理的建议。@MarioDeSchaepmeester在现实世界的实践中,软件包的私人访问级别是必不可少的。@Perception我在课堂上花了我那部分时间,甚至从头开始编写了整个课堂课程。有一件事我可以肯定地告诉你,我会非常小心我的术语:在Java中没有函数;有很多方法。