c# 类的public private internal protected的区别

news/2024/7/3 13:34:33 标签: c#, java, class, float
class="baidu_pl">
class="article_content clearfix">
class="htmledit_views">  

C#的类和Java一样有影响的范围限制

public 修饰的类,可以在整个系统的任意地方调用,是完全公开的.

private 相反的,只能在类内部调用.任何实例,无法调用private调用.

internal 仅为同项目(这里的项目是只单独的项目,而不是整个解决方案)调用,按照我的理解,应该是和class="tags" href="/tags/JAVA.html" title=java>java的friendly一样的效果.

protected   自己及自己的子类可以调用

好象和class="tags" href="/tags/JAVA.html" title=java>java相差就一个internal和friendly

================================================

这三个修饰符如果修饰的都是类中的成员的话,public 修饰的成员可以被所有的类访问(本类,别的类,本类的子类),private修饰的成员只能被本类访问,protected修饰的成员只能被本类和本类的子类所访问。

================================================

public意思是指变量可以被继承的类和new的实例条用.作用于全域.
private 只能在基类中使用. 继承的,实例后的都不可以.

using System;
class Vehicle
{
    public int wheel; //公有变量wheel,
    private float weight: //私有变量weight
    public void F()
    {
       wheel=4;   //合法调用
       weight=2.2;  //合法调用.
    }
}

class Train
{
     public int num;   //公有变量 num
     private int passenger; //私有变量passenger
     public void F()
     {
        num=4; //合法
        passenger=100; //合法
        Vehicle v= new Vehicle();
        v.wheel=4;  //合法, 调用到Vehicle的类中变量.
        v.weight=2.2;  //不合法. 因为vehicle中的weight是私有的.
     } 
}

class Car:Vehicle  //car的类继承自vehicle类.
{
     int passenger; 
     public void K()
     {  
        wheel=6;  //合法.
        weight=4.2  //不合法. //因为vehicle里面的是私有.
     }
 }


http://www.niftyadmin.cn/n/582036.html

相关文章

Vue 组件的静态方法(自用)

一、例子 父组件 Parent.vue <template><div></div> </template> <script> import Child from ../Child.vue export default {name: Parent,data() {return {}},mounted() {// 调组件的静态方法Child.getTest();// 子组件的实例console.log(ne…

Playground中格式注释语法

类似于Ruby的ruby document,Xcode的Playground自身也提供一些嵌入文档中的格式注释的语法. 我们先定义一个简单的类: class A{} 按住opt点击class A,你会发现啥都没有 我们在class A上面增加一行注释,只不过有别于单行注释的//,我们用的是/// ///A simple class that does …

c#委托 事件 机制

c#用委托来实现事件通知机制。委托相当与c函数指针。整个过程涉及一个呼叫者&#xff0c;一个被呼叫者,还有就是这个委托。 - 实现步骤 有以下几步: 1. 申明委托, 2.定义呼叫者和调用的函数&#xff0c; 3.定义被呼叫者和具体实现的函数&#xff08;被调用的函数&#xff09;…

Xcode中lldb的REPL调试方法

Xcode中lldb调试器有一个repl语句,可以用来模拟swift解释器的REPL行为,即Read Eval Print Loop. 在Xcode里随意打开程序,中断入调试器.在调试控制台中输入repl命令,然后我们输入一个函数: func num0(ary:[Int])->Int{return ary.reduce(0){if $1 0{return $0 1}else {re…

VBScript 函数

Date/Time 函数 函数描述CDate把一个有效的日期或时间表达式转换为日期类型。Date返回当前的系统日期。DateAdd返回已添加指定时间间隔的日期。DateDiff返回两个日期之间的时间间隔数。DatePart返回给定日期的指定部分。DateSerial返回日期的指定年、月、日DateValue返回日期Da…

Swift中方法(method)所谓的lazy绑定简介

我们知道在ruby之类的动态语言中对象方法可以先从类中预先抽取,然后再应用到某个具体对象上.这称为无绑定的method对象,也可以叫做lazy绑定. 下面举个例子: irb(main):004:0> system("ruby -v") ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-…

ArcGIS MapServer 区分动态图层(矢量) 和 瓦片

1. 发布 在 ArcMap 中发布服务时&#xff0c;选择“根据数据动态”表示矢量图层&#xff0c;选择“使用缓存中的切片”表示瓦片。 2. 根据服务地址区分 示例地址 http://127.0.0.1:6080/arcgis/rest/services/SampleWorldCities/MapServer 2.1. 动态图层(矢量) 如图&#xf…