You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:09:03