我刚刚在一个文档中读到"静态方法只能调用其他静态方法而不能从中调用非静态方法".但是当我试图测试它时,我认为看到了不同的东西.
我有一个C级,如下所述
import pckage1.*;
public class C
{
public static void main(String par[])
{
}
public static void cc()
{
A ob = new A();
ob.accessA(0);
}
}
Run Code Online (Sandbox Code Playgroud)
A级是哪里
package pckage1;
public class A
{
public A()
{
}
public void accessA(int x)
{
}
}
Run Code Online (Sandbox Code Playgroud)
现在来自C类中的cc STATIC方法,调用NON STATIC方法accessA().如果关于静态方法的陈述是真的,怎么可能呢?
我们知道Java是一种面向对象的语言.一切都是Java中的对象.我们也知道对象有一些东西(实例变量/字段)和做某事(方法).我们使用方法更改实例变量的状态是安全的,即; 二传手和吸气鬼.所以在构造函数中我们初始化实例变量.换句话说,构造函数正在为对象做一些事情.因此,假设构造函数是一种实用方法,就像设置值的setter一样,这是不正确的?区别在于setter甚至我们有返回类型void,在构造函数中我们没有任何返回类型.并且可以在对象上调用setter任意次数,但可以在对象的生命周期中调用构造函数一次.