2015-04-17 75 views
-1

语法obj.call用于调用Java中的非静态方法,其中obj是对Java对象的引用,call是方法调用。解释Java的类型系统如何限制obj的任何值的调用。静态和非静态方法的Java语法

我在一本教科书中看到了这个,他们给出的答案并不能很好地解释,有人可以向我解释一下吗?

编辑: 答案,这是我不理解

到Java对象的引用可以是可变的,或者它可以是一个方法调用。在任何一种情况下,它都有一个类型:如果它是变量,则它具有变量的声明类型,如果它是方法调用 ,则其类型是该变量的声明返回类型。类型可以是类类型或接口类型。 Java的类型系统限制了在obj上调用的方法可能是在obj类型中给出的方法 。所以调用必须与obj的 类型中的方法具有相同的名称,必须具有与方法参数 相同数量的参数,并且每个参数必须与其匹配参数兼容。兼容意味着相同类型或子类型的 。如果这个要求不符合,会出现编译器 错误。

+0

教科书中的问题现在很明显。你能否提供他们的答案? –

+0

你正在阅读的书的名字是什么? – CKing

+0

使用Java的现代软件开发。 – Aceboy1993

回答

1

如果obj是一个表示任何对象实例的变量,则将其与方法名称链接起来将自己的方法强制转换(非静态)。例如:

Object obj = new Object(); 
obj.toString();//non-static call 

要静态调用一个方法,您需要将类名放在方法名称的前面。例如:

class SomeClass 
{ 
    public static void aStaticMethod() 
    { 
     System.out.println("static method"); 
    } 
} 

class SomeOtherClass 
{ 
    public static void main(String args[]) 
    { 
     SomeClass.aStaticMethod();//Static call. 
    } 
} 

注意,如果静态方法是在同一个班,你在静态情况下,你可以直接调用这个函数调用它。

class SomeOtherClass 
{ 
    public static void main(String args[]) 
    { 
     SomeClass.aStaticMethod();//Static call. 
     anotherStaticMethod();//Another static call. 
    } 

    public static void anotherStaticMethod() 
    { 
     System.out.println("Another static method"); 
    } 
}