为什么静态方法不能调用非静态变量,非静态方法可以引用静态变量? 理由很简单,静态方法不属于对象,是属于类的,是不需要实例化的,而非静态变量是属于对象的,需要先实例化。在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了,访问一个内存中不存在 ...
. 程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能被访问。 类的静态成员 变量和方法 属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问 非静态成员 变量和方法 属于类的对象,所以只有在类的对象产生 创建类的实例 时才会分配内存,然后通过类的对象 实例 去访问。 在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了 ...
2017-06-20 10:55 0 4596 推荐指数:
为什么静态方法不能调用非静态变量,非静态方法可以引用静态变量? 理由很简单,静态方法不属于对象,是属于类的,是不需要实例化的,而非静态变量是属于对象的,需要先实例化。在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了,访问一个内存中不存在 ...
静态调用非静态方法!!这在java,c#中是不可想象的,也是绝对不行的。这样的错误在这些语言中会在编译阶段就被指出错误的。但是对于php这样的动态语言呢?首先这个是语法没有错误的,php –l 找不出错误来的。如果运行呢? 先看一个例子 <?php class myClass ...
Java中静态方法和非静态方法的调用是有区别的。 ①静态方法可以直接调用,如下冒泡排序,只需将冒泡方法设为static方法即可直接调用。 ② 非静态方法的调用,需要使用对象来调用。还是冒泡排序示例,如下 ...
一般情况F()不能调用G(),但是你可以增加一个静态成员class A{private static A instance=new A();public static void F()//静态{instance.G();//正确}public void G()//非静态{} } ...
其引用变量调用它的非静态方法。 //StaticMethodTest.java ...
有时候面试的时候,面试官会问静态方法里能不能调用非静态方法,这时候呢,你的回答是什么呢? 虽然不能直接调用,但是可以间接的调用,可以通过将一个对象的引用传入静态方法中,再去调用该对象的非静态方法。静态方法通过用传进来的对象引用调用非静态方法,从而达到静态方法调用非静态方法。 ...
,静态方法不能调用非静态属性。因为非静态属性需要实例化后,存放在对象里 5. 实例化变量即可调用公有方 ...
1、静态方法不能直接调用非静态 2、非静态方法可以直接调用静态方法 原因: 静态方法和类一起加载,非静态方法只有在创建对象时才会加载。所以才有了静态方法不能直接调用非静态(因为静态方法加载时类还没有初始化也就还没有非静态方法),非静态方法可以直接调用静态方法(因为非静态方法加载时 ...