gpt4 book ai didi

java - 为什么Java允许使用对象实例访问静态成员

转载 作者:搜寻专家 更新时间:2023-10-31 08:28:20 25 4
gpt4 key购买 nike

我的理解是静态成员属于类。为什么 Java 允许我使用对象访问它们?

要理解我的意思,请看下面的例子:

public class Student {
public static int number = 0;
}

这里的 number 是属于类 Student 的静态字段,但我仍然可以访问它,如下所示:

Student s = new Student();
int n = s.number;

这个决定背后的理由是什么?

最佳答案

这背后的基本原理是对象是类的实例,因此除了实例级属性之外,它应该能够访问属于类的每个属性。

这就像传统的邮件。如果您收到一封寄给您全家(静态成员)的邮件,您会觉得有权限打开它,因为您是家庭成员。另一方面,如果邮件的收件人是您(实例成员),则只有您有权打开它,您家中的任何其他人都没有权限。

这在其他面向对象的语言中也是一样的,比如 C++。但是,不鼓励使用 s.number 表示法访问静态成员,因为它会误导代码的读者。您应该始终使用 Student.number 表示法,因为这清楚地表明 number 是一个静态成员。如果您通过实例变量访问静态成员,现代语言(例如 C#)会发出警告,但根据语言规范,这仍然是完全合法的。

关于java - 为什么Java允许使用对象实例访问静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11062293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com