Java TS CPP语法基础
Java TS CPP语法基础
成员访问权限
访问修饰符基础对比
| 访问级别 | Java | C++ | TypeScript |
|---|---|---|---|
| 公开 | public | public | public |
| 受保护 | protected | protected | protected |
| 私有 | private | private | private |
| 包/模块级 | 默认(无关键字) | 无 | 无 |
| 友元 | 无 | friend | 无 |
| 只读/不可变 | final (字段) | const / mutable | readonly |
| 静态 | static | static | static |
| 抽象 | abstract | 纯虚函数 = 0 | abstract |
Java
| 修饰符 | 同类 | 同包 | 子类(不同包) | 其他类(不同包) | 说明 |
|---|---|---|---|---|---|
private | ✅ | ❌ | ❌ | ❌ | 仅本类可见 |
| (默认/包私有) | ✅ | ✅ | ❌ | ❌ | 无关键字,同包内可见,跨包不可见 |
protected | ✅ | ✅ | ✅ | ❌ | 同包 + 不同包的子类可见 |
public | ✅ | ✅ | ✅ | ✅ | 全局可见 |
Java 的 protected 允许不同包的子类访问,但仅限于通过子类引用访问继承的成员,不能通过父类引用或其他子类实例访问。
CPP
| 说明符 | 同类 | 子类 | 外部代码 | 说明 |
|---|---|---|---|---|
private | ✅ | ❌ | ❌ | 仅本类成员和友元可见 |
protected | ✅ | ✅ | ❌ | 本类 + 子类成员和友元可见 |
public | ✅ | ✅ | ✅ | 所有代码可见 |
额外机制:
| 机制 | 作用 |
|---|---|
friend | 授予特定类或函数访问 private/protected 成员的权限,打破封装边界 |
using Base::member | 在派生类中改变基类成员的访问级别(提升或降低) |
继承方式 (public/protected/private 继承) | 批量调整基类所有 public/protected 成员在派生类中的访问级别 |
mutable | 允许在 const 成员函数中修改特定成员(逻辑上不影响对象状态) |
Typescript
| 修饰符 | 同类 | 子类 | 外部代码 | 运行时效果 |
|---|---|---|---|---|
private | ✅ | ❌ | ❌ | ⚠️ 无(仅编译检查) |
protected | ✅ | ✅ | ❌ | ⚠️ 无(仅编译检查) |
public | ✅ | ✅ | ✅ | 无 |
#field (ES私有) | ✅ | ❌ | ❌ | ✅ 真私有(运行时强制) |
This post is licensed under CC BY 4.0 by the author.