我将自己定义为Java初学者,只用了一个学期,在此之前我几乎没有任何编程经验,几乎没有使用OOP。
无论如何,我正在浏览代码,我发现一个声明为类类型的方法
public Polica stavi (Predmet p, int i)
throws GPolIndeks, GPolZauzeto, GPolTezina{
if(i<0 || i>=niz.length) throw new GPolIndeks (i);
if(niz[i] != null) throw new GPolZauzeto (i);
if(q + p.Q() > maxQ) throw new GPolTezina (p);
niz[i] = p;
q += p.Q();
return this;
}
现在代码相当简单,除了声明了“stavi”方法的部分外,我几乎不陌生。我一直认为有两种类型的方法,那些返回值的方法和那些没有返回值的方法,而这一方法确实如此,但它并未声明为常规使用的任何类型(int,double,long ...) ,它是用类名声明的,在这种情况下是“Polica”。这是我第一次使用这样的东西并且它在编译器中工作,所以我的问题是,我可以在哪里更详细地阅读方法,以便更好地理解它是如何工作的。
答案 0 :(得分:1)
好的,我会为你解释一些观点。它的全部是关于OOP
Polica
是一个类,只要您创建它的实例就会成为Object
Polica polica = new Polica();
和方法可以返回任何类型的变量,也可以返回对象
这意味着在您的函数中,您希望返回一个对象Polica
public Polica stavi(){
Polica polica = new Polica();
return polica;
}
和this
表示它自己的自我实例,所以它与此
public Polica stavi(){
Polica polica = new Polica();
return this;
}
很好,你有一个很好的好奇心!这是一个很好的教程。
http://docs.oracle.com/javase/tutorial/java/concepts/index.html
http://docs.oracle.com/javase/tutorial/java/javaOO/objects.html
古德勒克!
答案 1 :(得分:0)
查看文档here
返回类型不必是int,long或double等。它可以是您自己定义的对象。
答案 2 :(得分:0)
它没有声明为常规使用的任何类型(int,double,long ...),它是用类名声明的
返回它们时,int,double,long等(它们被称为基元)和类之间没有区别。它们以相同的方式返回,并返回不同的类型。
public Potato weirdMethod(Elephant e) {
System.out.println(e);
return new Potato();
}
如果您定义了“Potato”和“Elephant”这两个类,那将会很好。
(编辑:正如Chris McCabe在评论中澄清的那样,当你返回一个对象时,它是传递引用,所以你可以改变它,它会改变你返回的实际对象。原语是按值传递的如果从方法中获取原语并进行更改,原始内容将不受影响。)
在这种情况下,看起来你想要使用构造函数。 http://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html
答案 3 :(得分:0)
在此示例中,该方法将引用返回给一个对象,在这种情况下,该对象是您刚刚调用方法的对象。这用于链接和经常使用的类是StringBuilder,例如。
String text = new StringBuilder().append("Hello, the time is ")
.append(new Date()).append("\n).toString();
正如您所看到的,这是有效的,因为每个append方法返回原始StringBuilder的this
。
答案 4 :(得分:0)
在java或任何其他oops语言中,方法的返回类型可以是任何对象类型,即它不限于基本类型(int,double ...)
您应该阅读this(语言规范)以获取更多详细信息。
答案 5 :(得分:0)
here你可以找到你需要的东西。回答你的问题,这个方法返回一个Polica类型的对象。
答案 6 :(得分:0)
官方java tutorials是一个很好的开始,我会推荐像Head First Java这样的书籍,这些书籍对于初学者来说非常有用,并且可以帮助你掌握java基础知识。
特定于您的问题java方法可以返回诸如int,float等原语,内置类对象实例(如Integer),或者在java应用程序中创建的自定义类,如您提到的“Polica”上方。
另请注意,在实例方法或构造函数中,这是对当前对象的引用 - 正在调用其方法或构造函数的对象。您可以通过使用'this'在实例方法或构造函数中引用当前对象的任何成员。所以在您的方法中,当您的方法返回'this'时,方法签名表示它返回'Polica',这意味着该方法“ stavi“是'Polica'类的一部分,并且是指'Polica'的当前实例。