静态方法&实例方法访问成员变量示例和一些内部类的知识

时间:2024-05-19 09:52:40

先上总结:
静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。

main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用
看着懵逼,看看代码就知道了
具体如下:

public class Access {
static int variable=0; //静态成员变量
int anotherVariable; //实例变量
static void firstMethod(){};//定义一个静态方法
void secondMethod(){};//定义一个实例方法
static void staMethod(){
int i=0;//正确,静态方法可以有局部变量
variable=10;//true, static Method可以用静态变量
firstMethod();//true,static Method可以调用static Method
anotherVariable=20;//wrong,static method不能使用实例变量
secondMethod();//wrong,static method不能调用实例方法
}
void thirdMethod{//定义一个实例方法
int i=0;//正确,实例方法可以有局部变量
variable=10;//true, instance Method可以用静态变量
anotherVariable=30;//true, instance Method可以用实例变量
firstMethod();//true, instance method可以调用静态方法
secondMethod();//true,instance method 可以调用实例方法
}
}

调用代码一定要写在方法中,放在类里会报错:
静态方法&实例方法访问成员变量示例和一些内部类的知识
又比如:
静态方法&实例方法访问成员变量示例和一些内部类的知识
一个静态方法如果想要调用一个实例方法会报错,解决方式:
创建一个实例方法的对象,如图:静态方法&实例方法访问成员变量示例和一些内部类的知识
对于一个内部类而言,我们知道任何一个非静态内部类都和外部类的实例相绑定,因此非静态内部类可以调用外部类的实例方法,对于静态内部类,可以在静态内部类中创建外部类的实例来访问外部类的实例方法,
补上一些内部类的知识:
外部类如何调用静态内部类中的属性和方法

1)外部类可以通过创建静态内部类实例的方法来调用静态内部类的非静态属性和方法

2)外部类可以直接通过“ 外部类.内部类.属性(方法)” 的方式直接调用静态内部类中的静态属性和方法

静态内部类如何调用外部类的属性和方法

静态内部类如果要访问外部的成员变量或者成员方法,那么必须是静态的

1)静态内部类可以直接调用外部类的静态属性和方法

2)静态内部类可以通过创建外部类实例的方法调用外部类的非静态属性和方法
如图:
但如果在外部类调用非静态内部类的实例方法,就会出现如下情况:
静态方法&实例方法访问成员变量示例和一些内部类的知识
解决方法:静态方法&实例方法访问成员变量示例和一些内部类的知识
就写这些吧,以后遇到问题补充