声明类类型的方法?

时间:2012-12-30 14:27:45

标签: java methods

我将自己定义为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”。这是我第一次使用这样的东西并且它在编译器中工作,所以我的问题是,我可以在哪里更详细地阅读方法,以便更好地理解它是如何工作的。

7 个答案:

答案 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)

我会从Java Tutorials for Methods

开始

在此示例中,该方法将引用返回给一个对象,在这种情况下,该对象是您刚刚调用方法的对象。这用于链接和经常使用的类是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'的当前实例。