Java编程:无需继承,Teststudent1类为何能使用student类的变量?
未继承却能访问类成员?这是怎么回事?
先看一下你提供的代码:
class student { int id = 100; String name = "home"; } class Teststudent1 { public static void main(String[] args) { student s1 = new student(); System.out.println(s1.id); System.out.println(s1.name); } }
嘿,这个问题问得很到位!其实核心是Java的访问权限控制在起作用:
- 你写的
student类里,id和name变量没有加任何访问修饰符(比如private、public),这在Java里属于默认访问权限(也叫包级私有)。 - Java的规则是:同一个包下的所有类,不管有没有继承关系,都能直接访问这种默认权限的成员。
- 你的
Teststudent1和student类都没有声明包名,所以它们默认处于同一个“默认包”中。这时候Teststudent1可以直接创建student的实例s1,然后通过实例访问id和name,自然就能输出100和home了。
举个反例:如果把student的变量改成private,或者把两个类放到不同的包下,那Teststudent1就没法直接访问这些变量了——这就是访问权限规则的体现。
内容的提问来源于stack exchange,提问作者ajay
相关产品推荐
相关产品推荐

