类成员和实例成员的访问

1.类成员和实例成员

1)类的成员:字段,方法,内部类;使用static修饰的成员
2)实例成员:没有使用static修饰的成员
3)类成员只能访问类成员,实例成员只能访问实例成员
4)类成员直接属于类,可以通过类来访问static字段和static方法。实例成员只属于对象,通过对象来访问非static字段和非static方法(对象其实可以访问类成员,但是底层依然使用类名访问的)

2.使用类成员跟实例成员的注意事项

1)在static方法中,只能调用static成员,否则出现”无法从静态上下文中引用非静态变量”
2)非static方法,可以访问静态成员,也可以访问实例成员
3)静态成员访问成员变量,该成员变量必须使用static进行修饰

3.什么时候定义成static的字段和方法

如果这个状态/行为属于整个事物(类),就直接使用static修饰,被所有对象所共享。在开发中往往把工具方法使用static修饰,如所用到的二分法查找,排序等等,如果不使用static修饰,则这些方法属于该类的对象,我们得创建对象再调用方法,因为创建N个对象会损耗内存,降低性能。在开发中工具对象只需要一份即可,可能创建N个对象,此时我们往往把该类设计为单例,但是还是有点麻烦。所以一般的,在开发设计中,为了调用简单,我们使用static修饰
“`
4.类成员使用的优点和缺点

1)优点:对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象都存储一份,可以直接被类名调用
2)缺点:生命周期过长。因为类成员是随着类的加载而加载的,意味着只要JVM还在运行就会一直存在,而不像实例成员那样,只要对象没有使用了就会被回收

5.代码:

package com.JAVABASIS6;
class ClassDemo2{
void isDo(){
System.out.println(“该学习了”);
}
}
public class StaticAndObjectDemo {
static String name = “成员变量”;
public static void main(String[] args){
//如果成员变量前面不用static进行修饰则会报错,Cannot make a static reference to the non-static field name,因为静态变量访问成员变量,该变量必须使用static进行修饰
System.out.println(name); //输出为”成员变量”
//当使用这句:ClassDemo2.isDo();//会报错:Cannot make a static reference to the non-static method isDo() from the type ClassDemo2

}
}

在 Python 中,类成员实例成员分别指的是在类定义中声明的变量或方法,以及在实例化类后每个实例相关联的变量或方法。 类成员是在类定义中声明的变量或方法,它们属于类本身,而不是属于类的任何实例。在类中定义的类成员可以通过类名直接访问,也可以通过实例访问实例成员是在实例化类后每个实例相关联的变量或方法。实例成员只能通过实例访问,不能通过类名访问实例成员包括实例变量实例方法,它们属于实例对象而不是属于类本身。 下面是一个示例代码,展示了类成员实例成员的使用: ```python class MyClass: class_variable = "I am a class variable" def __init__(self, instance_variable): self.instance_variable = instance_variable def instance_method(self): print("I am an instance method") # 访问类成员 print(MyClass.class_variable) # 实例化类并访问实例成员 my_instance = MyClass("I am an instance variable") print(my_instance.instance_variable) my_instance.instance_method() ``` 输出结果为: ``` I am a class variable I am an instance variable I am an instance method ``` 在示例代码中,`class_variable` 是一个类成员,在类定义中声明,可以通过类名 `MyClass` 直接访问。`instance_variable` `instance_method` 是实例成员,在实例化类后,每个实例相关联。`instance_variable` 是一个实例变量,只能通过实例 `my_instance` 访问;`instance_method` 是一个实例方法,也只能通过实例 `my_instance` 访问
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值