java中某些成员的声明范围

时间:2016-03-03 09:23:38

标签: java

静态和即时方法的范围,以及java中的静态或实例变量是什么?如果他们在同一个班级或其他班级。

3 个答案:

答案 0 :(得分:1)

  

静态和即时方法的范围,以及java中的静态或即时字段的范围是什么?

static成员的范围是它所在的类。

没有什么"瞬间"在电脑里,一切都需要时间。

实例变量也具有该类的范围。注意:您只能访问实例上的实例变量。

  

静态方法是否只能调用同一个类中的静态成员?

静态方法可以调用静态或其他任何方法。如果它调用实例方法,它必须提供实例,它正在调用该方法。

注意:实例方法也只能在方法上调用实例方法。不同的是;如果您没有指定实例,Java会假设您使用this,但对于static方法,则不能使用this

答案 1 :(得分:1)

静态方法,变量和初始化代码具有以下特征。

They’re associated with a class.
They’re initialized only when a class is loaded.

实例方法,成员变量具有这些特征。

They’re associated with a particular object.
They’re created with every object instantiated from the class in which they’re declared.

答案 2 :(得分:1)

我想用一个例子回答你的问题。希望它会给你更好的清晰度。

<强> StaticExample.java

    public class StaticExample {

    public static int Static_var= 0 ; 
    public int instance_var = 0 ;

    public static void changeValStatic(){

        Static_var ++; // Accessing static variable from static method.

        //  instance_var++;  --> Error because it is not possible to access instance variables in static methods

        changeVal2Static(); // Calling static method of the same class.

        //  display();     --> Error because it  is not possible to access non static (instance) methods in static methods.
    }

    public static void changeVal2Static(){

        System.out.println("Call to second static method");

    }

    public void changeValInstance(){

        Static_var ++; // Access to static variable from instance method

        instance_var++; // Access to instance variable from instance method
    }

    public void display(){
        //Printing instance and static variable
        System.out.println("Instance variable :- " + this.instance_var);
        System.out.println("Static variable :- " + Static_var );
    }
}

<强> StaticExampleTest.java

public class StaticExampleTest {
        public static void main(String[] args) {
            StaticExample se = new StaticExample();// Create an instance of StaticExample class

            se.changeValInstance(); //call the instance method using "se" instance of StaticExample class

            //se.changeValStatic(); Not error but Invalid because Static methods are class methods , should be called using class name

            StaticExample.changeValStatic(); // Valid Call to static method 

            se.display(); //Call to instance method.
        }
}