在 Java 里,字段(Field)本身是不能像方法那样被“重写(override)”的,但可以被子类继承。下面从几个常见角度讲清楚“Java 字段怎么继承”。
非 private 的字段会被子类继承
class Parent {
protected int age = 10;
}
class Child extends Parent {
void test() {
System.out.println(age); // 继承父类的字段
}
}
✅ 可继承的字段:
publicprotected❌ 不可继承:
privateprivate 字段不会继承,但可通过方法访问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 永远看 Parentclass 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
如果你是想问:
可以告诉我具体场景,我可以进一步讲。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。