静态和非静态方法的Java语法

时间:2015-04-17 16:27:42

标签: java syntax static

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

我在一本教科书中看到了这个,他们给出的答案并没有真正解释清楚,有人可以向我解释一下吗?

修改 答案,我不明白

对Java对象的引用可以是变量,也可以是方法调用。在任一情况下, 它有一个类型:如果它是一个变量,它有一个声明的变量类型,如果它是一个方法调用 它的类型是该变量的声明返回类型。类型可以是类类型或类型 界面类型。 Java的类型系统限制了对obj的方法调用方法 它们以obj的类型给出。所以call必须与the中的方法同名 obj的类型,必须与方法参数具有相同数量的参数, 并且每个参数必须与其匹配参数兼容。兼容的手段 相同类型或子类型。如果不满足此要求,则会有编译器 错误。

1 个答案:

答案 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");
    }
}