作用域public,private,protected,以及不写时的区别

本文探讨了C++和JAVA中public、private、projected作用域的区别。在C++中,public成员对所有类开放,private仅限类自身及其友元,projected允许类、子类、友元访问。JAVA中,private限制为类内访问,projected允许类、子类和同一包访问,public则对所有类开放。默认情况下,C++的struct类成员是public,而class成员是private;JAVA中无projected,有包访问级别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++中和JAVA中,publicprivateprojected的用法不完全一样。

C++中:

  • public修饰的成员变量或方法可以被任意其他的类访问。
  • private修饰的成员变量和方法,只能有类本身以及友元函数和友元类来访问。
  • projected修饰的成员变量和方法,能被类本身、继承本身的子类、友元函数以及友元类来访问。<
### C# 访问修饰符的作用域解释 #### private 修饰符 `private` 修饰符定义的成员仅能在声明它的类内部访问。这意味着即使派生自该类的子类也无法访问 `private` 成员[^2]。 ```csharp class Vehicle { private string model; } ``` #### protected 修饰符 `protected` 关键字指定的成员可由其所在类及其任何派生类访问。这使得基类能够向子类公开某些实现细节而对外界开放[^1]。 ```csharp class Engine { protected int _rpm; protected void Burn(int amount) { // Implementation here... } } class Car : Engine { public void Start() { this._rpm = 800; // Accessible because of inheritance. base.Burn(5); // Also accessible through 'base' keyword. } } ``` #### public 修饰符 当使用 `public` 来限定成员,它意味着没有任何访问限制;也就是说,此类或结构中的公共成员可以从程序内的任意位置被访问到[^4]。 ```csharp public class Program { static void Main(string[] args) { var car = new Car(); Console.WriteLine(car.GetType().Name); } } ``` #### internal 修饰符 带有 `internal` 的成员可以在同一程序集(即同一个项目)内自由访问,但在外部则无法触及。这对于希望保持组件间接口清晰的应用特别有用。 ```csharp internal class InternalClass { public void DoSomething() {} } // Within the same assembly/project: var instance = new InternalClass(); instance.DoSomething(); // This works fine within the project boundary. // Outside the assembly/project would result in compile-time error. ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值