java作用域public ,private ,protected 的区别
在说明这四个关键字之前,我想就class之间的关系做一个简单的定义,对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes,认为都是自己的朋友。
1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。
3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为friendly
举例1:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
aa c = new aa();
c.bb;//出错,因为bb是私有的
c.Bb;//正确,Bb是共有的。封装了bb的一个变量。想访问私有变量,那么就要封装它。
}
}
class aa
{
private string bb;
public string Bb1
{
get { return bb; }
set { bb = value; }
}
}
}
举例2:
class A{
public:
int a1;
protected:
int a2;
private:
int a3;
};
A a;
a.a1;//ok
a.a2;//error
a.a3;//error
class B:public A{
public:
void fb(){
a1;//ok
a2;//ok
a3;//error;
}
};
B b;
b.a1,b.a2,b.a3与a.a1,a.a2,a.a3一样,因为是class B:public A,相当于把A放到了B的public部分。
如
class B:private A{};
则
b.a1,b.a2,b.a3都error,因为相当于把A全放到了B的private部分,从B来看这三个变量,都是private的。
分享到:
相关推荐
C#有`public`, `private`, `protected`, `internal`和`protected internal`等访问修饰符,控制类成员的可见性。与Java类似,`public`成员可在任何地方访问,`private`仅在类内部可见,`protected`允许子类访问,`...
Java的访问级别从低到高依次是private、default、protected和public,而C#有private、internal、protected、protected internal和public。值得注意的是,C#的internal访问级别与Java的default类似,但作用范围基于...
- Java的访问修饰符主要是`public`、`default`(包访问)、`protected`和`private`。 这些对比点只是C#和Java之间众多差异中的一部分,学习这两门语言时,理解这些区别对于开发者来说至关重要,尤其是在准备面试或...
- **访问修饰符**:Java的`public`, `private`, `protected`和`default`对应C#'s `public`, `private`, `protected`和`internal`。 - **异常处理**:Java的`try-catch-finally`块在C#中也有对应的`try-catch-finally...
- C#中,如果成员没有明确的访问修饰符,它默认是`private`,而在Java中,成员默认是包访问权限(default),即在同一包内的类可见。 - C#中的`internal`对应Java的包访问权限,即默认情况下,同一包内的类可以...
public允许所有类访问,private限制为仅限于当前类内部访问,protected允许子类访问,internal用于同程序集内的访问,而default(无明确修饰符)的访问级别通常为assembly-level(程序集级别)。 此外,C#还引入了...
在C#中,可以通过使用`System.ComponentModel`命名空间中的特性来定义属性,如`DefaultValue`(指定默认值)和`Category`(分组属性)。以下是一个添加自定义属性的例子: ```csharp [DefaultValue("默认文本")] ...
C# 中的WndProc 函数是Windows 消息处理函数的入口点,它可以拦截和处理所有的Windows 消息。WndProc 函数的原型定义为:`protected override void WndProc(ref Message m)`,其中 `Message` 结构体包含了消息的所有...
`public`,`private`,`protected`和`internal`用于访问修饰,`virtual`,`override`,`sealed`,`abstract`用于方法和属性的多态性。 7. **泛型**: C#中的泛型允许创建可重用的数据结构和算法,它们可以适应多种...
在C#编程中,自定义控件是一种常见的需求,它允许开发者根据特定的项目需求创建具有独特功能和外观的UI元素。本文将深入探讨C#自定义控件的创建过程,以及如何通过事件来传递信息。 首先,创建自定义控件需要新建一...
在C#中,可以通过访问修饰符(如`public`、`private`、`protected`等)来控制类成员的可见性。 ### 五、继承 继承允许一个类(派生类)从另一个类(基类)继承属性和方法。这样可以复用代码,减少重复,并提高程序...
10. **安全性**:C#支持访问控制(如public、private、protected等)、权限修饰符(如unsafe、internal等),以及代码签名和强命名,确保代码的安全性和可靠性。 这个“C#语言规范word新”文档,作为学习和开发C#的...
C#的关键字大全 C#语言中,关键字是对编译器具有特殊意义的预定义保留标识符,这些关键字不能在...C#语言中的关键字是编译器识别的特殊标识符,它们具有特殊的意义和用途。在编程时,正确地使用关键字是非常重要的。
6. **可访问性级别**:C#中的访问修饰符有public(公开)、protected(受保护)、internal(内部)、protected internal(受保护且内部)、private(私有),分别控制了成员对不同范围的可访问性。 7. **sealed ...
### C#.Net的常见面试试题及答案解析 #### 1. 关于`new`操作符的理解 在C#中,`new`关键字有着多种用途: 1. **创建对象:** - `new`用于创建一个类的新实例。 - 示例:`MyClass obj = new MyClass();` 2. **...
- **C#与Java的区别**:在Java中,类和接口之间使用空格分隔,而在C#中使用逗号分隔。 #### 十三、异常处理 - **异常处理的目的**:增强程序的健壮性,确保程序即使遇到意外情况也能继续运行。 - **异常处理的基本...
- **封装**:通过访问修饰符(public、private、protected)实现数据的隐藏和保护。 3. **泛型** - 泛型提供了一种方式来创建类型参数化的类、接口和方法,增强了代码的可重用性和类型安全性。 4. **异常处理** ...
本教程将详细讲解如何在C#中实现用户界面控件的拖动操作,以实现更加灵活和直观的交互设计。 首先,我们需要了解Windows Forms或WPF(Windows Presentation Foundation)这两个C#中的UI框架。Windows Forms是.NET ...
它包括类的设计、对象的创建和销毁、接口、抽象类、访问修饰符(public, private, protected, default),以及设计模式(如单例模式、工厂模式、观察者模式)等。ood(java).ppt可能会详细讲解这些概念和实践方法。 ...