语法obj.call用于在Java中调用非静态方法,其中obj是对Java对象的引用,而call是方法调用。解释Java的类型系统如何限制对任何obj值的调用。
我在一本教科书中看到了这个,他们给出的答案并没有真正解释清楚,有人可以向我解释一下吗?
修改 答案,我不明白
对Java对象的引用可以是变量,也可以是方法调用。在任一情况下, 它有一个类型:如果它是一个变量,它有一个声明的变量类型,如果它是一个方法调用 它的类型是该变量的声明返回类型。类型可以是类类型或类型 界面类型。 Java的类型系统限制了对obj的方法调用方法 它们以obj的类型给出。所以call必须与the中的方法同名 obj的类型,必须与方法参数具有相同数量的参数, 并且每个参数必须与其匹配参数兼容。兼容的手段 相同类型或子类型。如果不满足此要求,则会有编译器 错误。
答案 0 :(得分: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");
}
}