zoukankan
html css js c++ java
(转)C#中protected用法详解
(转自
http://blog.csdn.net/lijinlin/article/details/5954688
)
在c#的可访问性级别中,public和private算是最容易理解的,相反protected往往令人非常头疼。经常在网上查资料的朋友往往会发现,
答案几乎都是前篇一律,不是从msdn上拷贝的就是从别人的博客上抄袭的,简直是天下文章一大抄,今天咱们就来点和别人不同的,通过例子来透析一下
protected访问修饰符到底是怎么回事。
下面先来看一下,protected访问修饰符在大多数资料中的定义:访问仅限于包含类或从包含类派生的类型。搞明白问题只靠眼看是不行的,需要实践,现
在我们用事实来说明问题。
代码如下:
class BaseTest
{
public int a = 10;
protected int b = 2;
}
class ChildTest:BaseTest
{
int c;
int d;
public void printTest()
{
BaseTest basetest = new BaseTest();
this.a=basetest.a;
this.c = basetest.b;
}
}
这段代码中派生类中的方法的最后一行代码会报错:无法通过类型“protectedtest.Vehicle”的限定符访问保护成员
“protectedtest.Vehicle.weight”;限定符必须是类型“protectedtest.Car”(或者从该类型派生)。看到这
里就会有很多人要问了,不是说protected类型的访问仅限于包含类或者从包含类派生的类型吗,为什么这里还是要报错呢,下面就来说明一下,包含类能
够使用protected类型的应该是没有任何问题了,这里就不用那个说了,主要问题就是集中在为什么在上面的那个例子中基类的实例为什么不能够访问
protected类型的变量,这里就涉及到对protected类型的理解,protected类型并不是能够被派生类所访问就是随心所欲的访问,而是
有条件的,访问必须是通过派生类类型发生时,在派生类中的基类的protected类型成员才能够被访问,这里就很清楚了上面的代码并不是通过派生类的类
型访问的,而是通过基类的类型访问的,此时此刻,protected和private十分的相似,只不过,protected类型成员能够被派生类所继承
并且能够通过派生类类型访问罢了。
改成如下形式就正确了,不过大家不过拘泥于这两个代码的形式,要看透到底是说明了个什么问题.
class BaseTest
{
public int a = 10;
protected int b = 2;
}
class ChildTest : BaseTest
{
int c;
int d;
static void Main(string[] args)
{
BaseTest basetest = new BaseTest();
ChildTest childTest = new ChildTest();
Console.WriteLine(childTest.b);
}
}
查看全文
相关阅读:
【2018.10.3】万圣节的快递
【2018.10.3】万圣节的入场券
【2018.10.2】纸条
【2018.10.2】菌落合并
【2018.10.2】Note of CXM
【2018.10.1】【JSOI2016】最佳团体(bzoj4753)
【2018.10.1】「JOI 2014 Final」年轮蛋糕
【2018.9.26】K-D Tree详解
Python中的numpy模块解析
Python中xlrd模块解析
原文地址:https://www.cnblogs.com/wangyt223/p/2627801.html
最新文章
noj[1581] 筷子
南邮oj[1401] 乘车费用
luogu[1279]字串距离
tyvj1098[luogu 2365]任务安排 batch
[USACO1.1]坏掉的项链Broken Necklace
NOIP模拟赛 最大匹配
NOIP模拟赛 隔壁
NOIP2003 神经网络
NOIP模拟赛 夕阳
【2018.10.20】noip模拟赛Day3 飞行时间
热门文章
可持久化动态图上树状数组维护01背包(牛客网的一道傻逼题)
「SDOI2010」古代猪文(bzoj1951)
【2018.10.18】CXM笔记(动态规划)
【2018.10.18】noip模拟赛Day2 地球危机(2018年第九届蓝桥杯C/C++A组省赛 三体攻击)
【2018.10.15】WZJ笔记(数论)
【2018.10.15】noip模拟赛Day1
【2018.10.12】冥土追魂
【2018.10.10】[HNOI2008] GT考试(bzoj1009)
【2018.10.4】CXM笔记(图论)
【2018.10.4】二连爆搜+再次出锅
Copyright © 2011-2022 走看看