温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Field字段怎么继承

发布时间:2026-10-06 21:50:13 来源:亿速云 阅读:93 作者:小樊 栏目:编程语言

在 Java 里,字段(Field)本身是不能像方法那样被“重写(override)”的,但可以被子类继承。下面从几个常见角度讲清楚“Java 字段怎么继承”。


一、字段的继承(最基础)

非 private 的字段会被子类继承

class Parent {
    protected int age = 10;
}

class Child extends Parent {
    void test() {
        System.out.println(age); // 继承父类的字段
    }
}

✅ 可继承的字段:

  • public
  • protected
  • 默认(包访问,同包可用)

❌ 不可继承:

  • private

二、private 字段不会继承,但可通过方法访问

class Parent {
    private int money = 100;

    public int getMoney() {
        return money;
    }
}

class Child extends Parent {
    void test() {
        // money 不可直接访问
        System.out.println(getMoney());
    }
}

✅ 最佳实践:字段私有 + getter/setter


三、字段“隐藏”(不是重写)

子类和父类有同名字段时,叫 字段隐藏(hide)

class Parent {
    int x = 1;
}

class Child extends Parent {
    int x = 2;
}
Parent p = new Child();
System.out.println(p.x); // 1(编译看左边)

Child c = new Child();
System.out.println(c.x); // 2

⚠️ 注意:

  • 字段没有多态
  • p.x 永远看 Parent
  • 方法才有多态,字段没有

四、构造器中初始化继承字段

class Parent {
    protected int value;
}

class Child extends Parent {
    Child(int v) {
        this.value = v; // 使用继承的字段
    }
}

✅ 子类构造器可以:

  • 直接赋值继承字段
  • 通过 super() 让父类初始化

五、父类构造器给字段赋值(推荐)

class Parent {
    protected int age;

    Parent(int age) {
        this.age = age;
    }
}

class Child extends Parent {
    Child() {
        super(18);
    }
}

六、静态字段的“继承”

class Parent {
    static int count = 0;
}

class Child extends Parent {}
Child.count++; // 实际是 Parent.count

✅ 静态字段:

  • 可被继承访问
  • 实际属于父类
  • 不推荐通过子类访问

七、总结一句话

Java 字段通过“继承访问”存在,而不是通过重写;
多态只适用于方法,不适用于字段。

✅ 推荐写法:

private 字段 + protected/getter

如果你是想问:

  • ✅ 反射中怎么获取父类的 Field
  • ✅ JPA / ORM 中字段继承
  • ✅ 记录类(record)字段继承

可以告诉我具体场景,我可以进一步讲。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手