“保护超类数据”通常指在继承体系中,防止子类错误地访问、修改或破坏父类(超类)中本应受控的数据。在不同语言(Java / C++ / Python 等)中思路类似,但语法不同。下面从设计原则 + 具体手段来说明。
class Super {
private int secret = 10;
protected int getSecret() {
return secret;
}
}
private:子类完全不可见protected:仅子类可见,外部不可见✅ 子类不能改 secret,只能读
class Super {
private final int value;
Super(int v) {
this.value = v;
}
public int getValue() {
return value;
}
}
final + 无 setter = 数据不可被修改class Super {
private List<String> list = new ArrayList<>();
public List<String> getList() {
return new ArrayList<>(list); // 拷贝
}
}
✅ 子类拿到的不是原引用
final class Super { } // 不能被继承
final void coreLogic() { } // 子类不能重写
class Super {
public final void run() {
before();
doWork();
after();
}
protected void doWork() { }
}
✅ 子类只能填“空洞”,不能改流程
Python 无真正私有,但约定 + 名称改写:
class Super:
def __init__(self):
self.__data = 10 # _Super__data
def get_data(self):
return self.__data
self.__data_Super__data 访问(靠纪律)record Point(int x, int y) {}
或:
from dataclasses import dataclass
@dataclass(frozen=True)
class Point:
x: int
y: int
❌ 把字段写成 public
❌ 给所有字段加 setter
❌ 允许子类随意重写核心逻辑
❌ 把集合直接返回给子类
保护超类数据 = 私有化 + 不暴露 + 不变量 + 限制继承
如果你有具体语言或场景(如 Java 继承、Spring、游戏开发、框架设计),我可以给更针对性的方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。