在 Java 里没有“private 继承”这个概念,这是 C++ 里的说法。
Java 的继承方式和访问控制是分开的,如果你问的是“父类 private 成员在子类里怎么用”,那下面给你讲清楚。
class Parent {
private int x = 10;
}
class Child extends Parent {
}
✅ Child 继承了 Parent
❌ 但 不能直接访问 private 成员
class Parent {
private int x = 10;
}
class Child extends Parent {
public void test() {
// System.out.println(x); // ❌ 编译错误
}
}
原因:
private 只对本类可见
public / protected 方法访问✅ 这是 Java 的标准做法
class Parent {
private int x = 10;
public int getX() {
return x;
}
protected void setX(int x) {
this.x = x;
}
}
class Child extends Parent {
public void test() {
System.out.println(getX()); // ✅ OK
setX(20); // ✅ OK
}
}
如果你希望子类直接用,但又不对外暴露:
class Parent {
protected int x = 10;
}
class Child extends Parent {
public void test() {
System.out.println(x); // ✅ OK
}
}
访问范围:
| 修饰符 | 同类 | 同包 | 子类 | 不同包 |
|---|---|---|---|---|
| private | ✅ | ❌ | ❌ | ❌ |
| protected | ✅ | ✅ | ✅ | ❌ |
| public | ✅ | ✅ | ✅ | ✅ |
class Parent {
private int x;
}
class Child extends Parent {
public Child() {
// this.x = 10; // ❌
}
}
✅ 正确方式:
class Parent {
private int x;
public Parent(int x) {
this.x = x;
}
}
class Child extends Parent {
public Child() {
super(10); // ✅
}
}
| C++ | Java |
|---|---|
| private 继承 | ❌ 不存在 |
| 子类不能访问父类 private | ✅ 一样 |
| 想让子类用 | protected |
| 想让外部用 | public |
Java 中子类不能直接使用父类的 private 成员,必须通过 public / protected 方法间接使用。
如果你愿意,可以把你具体的代码贴出来,我可以帮你判断该用 private、protected 还是别的设计方式。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。