在 Java 中,字段(Field)是可以“被继承”的,但有一些限制和细节需要注意。下面分点说明:
子类会继承父类的非 private 字段。
class Parent {
int a = 10;
private int b = 20;
}
class Child extends Parent {
void test() {
System.out.println(a); // ✅ 可以访问
// System.out.println(b); // ❌ 编译错误,private 不可继承
}
}
✅ 继承规则:
public / protected / 默认(同包)字段:可继承private 字段:不继承(但内存中仍然存在)Java 中 字段没有多态,只有方法有多态。
class Parent {
int x = 1;
}
class Child extends Parent {
int x = 2; // 隐藏父类的 x
}
Parent p = new Child();
System.out.println(p.x); // 输出 1(编译时类型决定)
⚠️ 注意:
super.x 可访问父类字段静态字段也可以被继承,但同样只是隐藏:
class Parent {
static int count = 1;
}
class Child extends Parent {
static int count = 2;
}
System.out.println(Child.count); // 2
System.out.println(Parent.count); // 1
class Parent {
final int MAX = 100;
}
class Child extends Parent {
// MAX 可继承,但不能重新赋值
}
虽然和字段无关,但常一起问:
super())| 问题 | 结论 |
|---|---|
| 字段能继承吗 | ✅ 能(非 private) |
| 字段能重写吗 | ❌ 不能,只能隐藏 |
| private 字段继承吗 | ❌ 不继承(但存在) |
| static 字段继承吗 | ✅ 能,但会隐藏 |
| 字段有多态吗 | ❌ 没有 |
如果你是在考虑 ORM / 反射 / 序列化 / Lombok 等场景,也可以继续问,我可以结合具体场景讲。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。