概述
设A为父类,B为继承A的子类
在A中被protected修饰的成员
1、在A中可以访问
2、在B中可以直接访问
3、在B中通过B的实例访问
4、在A和B的外部类无法访问`
总结
基类中访问无限制;子类中直接访问或通过子类实例访问
代码示例
using System;
namespace TestProtected
{
class Program
{
static void Main(string[] args)
{
var baseClass = new BaseClass();
var childClass = new ChildClass();
Console.WriteLine(baseClass.Member1);
// Console.WriteLine(baseClass.Member2);//不能访问
// baseClass.Function2();//不能访问
Console.WriteLine(childClass.Member1);
// Console.WriteLine(childClass.Member2);//不能访问
//childClass.Function2();//不能访问
}
}
public class BaseClass
{
public int Member1 = 100;
protected int Member2 = 200;
public int Member3;
public void Function1()
{
Member3 = Member2;
Function2();
var baseClass = new BaseClass();
var childClass = new ChildClass();
Console.WriteLine(baseClass.Member1);
Console.WriteLine(baseClass.Member2);
baseClass.Function2();
Console.WriteLine(childClass.Member1);
Console.WriteLine(childClass.Member2);
childClass.Function2();
}
protected void Function2()
{
Console.WriteLine("Function2");
}
}
public class ChildClass : BaseClass
{
public void Test()
{
Console.WriteLine(Member1.ToString());
Console.WriteLine(Member2.ToString());
Function2();
var baseClass = new BaseClass();
var childClass = new ChildClass();
Console.WriteLine(baseClass.Member1);
//Console.WriteLine(baseClass.Member2);//不能访问
//baseClass.Function2();//不能访问
Console.WriteLine(childClass.Member1);
Console.WriteLine(childClass.Member2);//不能访问
childClass.Function2();//不能访问
}
}
}
————————————————
版权声明:本文为CSDN博主「Jacob Ni」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/nihang1234/article/details/70245894