java类实例能访问静态属性_Java学习笔记8---类的静态成员变量与静态成员方法的访问与调用方式...

本文详细探讨了Java中静态成员变量(类变量)和静态成员方法(类方法)的访问规则。静态成员变量可被类的静态和非静态方法直接访问,也可通过类名或对象访问。静态方法不能直接访问非静态成员变量和方法,需要通过实例化对象来间接访问。文章通过代码示例验证了这些规则,并强调了使用类名访问静态成员的推荐做法。
摘要由CSDN通过智能技术生成

(注:静态变量修改为静态成员变量,静态方法改为静态成员方法)

静态成员变量又称类变量,静态成员方法又称类方法,它们统称为静态成员或类成员。静态成员由static修饰,是属于整个类的,所有的对象共享这些静态成员。不需要创建任何对象,静态成员在类装载时就已初始化了,整个运行期间其内存位置不变,直到类卸载。鉴于静态成员的这些特性,访问静态成员变量以及定义或调用静态成员方法时与非静态成员也有不同之处。下面分别做出说明。

1.静态成员变量

类的非静态成员方法、静态成员方法都可以直接访问静态成员变量

其他类要访问某个类的静态成员变量,既可以通过实例名访问,也可以直接用类名来访问,推荐用类名访问的方式,这样能更直观的说明访问的变量是静态成员变量

2.静态方法

不能直接访问非静态成员变量,也不能直接调用非静态成员方法,需要实例化一个对象,再通过该对象来访问要访问的非静态成员变量或要调用的非静态成员方法。也就是说,静态成员方法不能直接使用非静态成员。个人理解是,非静态成员变量是依托对象而存在的,当没有实例一个对象时,非静态成员变量是没有分配内存空间的,静态方法要使用非静态成员变量不知道要到哪里去找,当然就不能直接使用非静态成员变量了。而非静态成员方法有有可能访问非静态成员变量,所以也不能直接调用非静态成员方法了。

其他类要调用某个类的静态成员方法,既可以通过实例名调用,也可以直接用类名来调用,推荐用类名调用的方式,这样能更直观的说明调用的方法是静态成员方法

3.下面以简单的代码验证上面的结论

定义了一个Person类,类的代码见最后面。

(1).类的静态成员方法和非静态成员方法都可以直接访问静态成员变量

静态成员方法staticMethod访问了静态成员变量citizenship

定义并使用了局部变量testY

非静态成员方法informationPrint访问了静态成员变量citizenship

staticMethod()方法如下:

public static void staticMethod() {

int testY = 20;

System.out.println("She has applied for " + citizenship + " citizenship"); //static variable access

System.out.println("She's now " + testY + " years old"); //local variable access

}

informationPrint()方法如下:

public void informationPrint() {

System.out.println("My name is " + getName());

System.out.println("I am " + getAge() + " years old");

if(getGender() == "female")

System.out.println("I am a girl");

else

if(getGender() == "male")

System.out.println("I am a boy");

else

System.out.println("Something is wrong!");

System.out.println("My hobby is " + hobby);

if(citizenship == "Chinese")

System.out.println("I am a chinese");

else

if(citizenship == "US")

System.out.println("I am an American");

else

System.out.println("Oh,something is wrong");

}

main()方法如下:

public static void main(String[] args) {

Person xiaoxi = new Person("xiaoxi",29,"female","piano");

xiaoxi.informat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值