在 C# 中受保护

PHPz
发布: 2024-09-03 15:28:47
原创
1225 人浏览过

在本文中,我们将详细了解如何在 C# 中实现 protected。借助访问修饰符,我们可以限制参数和类的可访问级别。 C#中有以下访问修饰符

  • 公开
  • 私人
  • 受保护
  • 内部

C# 中受保护的修饰符

在 C# 中,我们可以使用 protected 修饰符来指定访问仅限于包含类型。此外,我们还可以将它用于从包含类派生的类型。 protected 这个词意味着它本身以及派生类都可以访问或可见。

借助此成员或类型,只能由同一类中使用的代码或派生类中使用的代码访问。 protected 关键字位于 private 和 public 修饰符之间。它与 private 修饰符几乎相同,但它允许成员访问派生类。当我们想要向父母授予对孩子财产的访问权限时,我们主要使用 protected 关键字。因此我们可以借助 protected 关键字重用逻辑。

示例:

using System;
class Test
{
protected int _x; private int _y;
}
class Test1 : Test
{
public Test1 ()
{
// In this we can  access the variable protected int but we cannot access private int variable
Console.WriteLine(this._x);
}
}
class Program
{
static void Main()
{ Test1 b = new Test1 (); }
}
登录后复制

考虑 2 个类,Test 和 Test1。类 Test1 派生自 Test。如果我们查看类 Test 的内部,我们可以看到已经声明了两个 int 字段。 1 个受保护,1 个私有。

在类 B Test1 中,我们可以访问 protected int,但无法访问 private int。因此 protected 修饰符为我们提供了派生类中的额外访问权限。因此,借助 protected 关键字,我们可以访问包括所有派生类在内的受保护字段。

一个类也可以被保护。下面是如何声明它的示例

语法:

public class Test
{
protected class Child
{
}
}
登录后复制

只有在嵌套类中,我们才能将类声明为受保护的。我们无法在命名空间内定义它。

在 C# 中实现 Protected 的示例

以下示例展示了如何在 C# 中实现 protected:

示例 #1 – 没有实现子类

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProtectedExample
{
class demo
{
// String Variable declared as protected
protected string name;
public void print()
{
Console.WriteLine("\name is " + name);
}
}
class Program
{
static void Main(string[] args)     // main method
{
demo d = new demo();
Console.Write("Enter your name:\t");
d.name = Console.ReadLine();
d.print();
Console.ReadLine();
}
}
}
登录后复制

在上面的示例中,字符串被声明为受保护。该程序将引发错误,因为 protected 将对其他类隐藏其成员。所以它只能在儿童班级中使用。

示例 #2 – 通过继承实现

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProtectedExample
{
class Demo
{
protected string name = "Protected Keyword";
protected void Display(string val)
{
Console.WriteLine("This is " + val);
}
}
class Program : Demo   // inheritance
{
static void Main(string[] args)
{
Program program = new Program();
// Accessing protected variable
Console.WriteLine("This is " + program.name);
// Accessing protected function
program.Display("protected example");
Console.ReadLine();
}
}
}
登录后复制

在上面的示例中,Parent 类由受保护的成员组成。 protected 用于声明字符串。现在子类是从父类派生的,并且使用继承的概念来访问受保护的成员。

输出:

在 C# 中受保护

示例 #3

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProtectedExample
{
class Parent
{
private String Private = "My name is John";    // string declared as private
protected String Protected = "My name is Dan"; //  string declared as protected
}
class Child : Parent // inheritance
{
public void Show()
{
Console.WriteLine(Protected);
}
}
class Program
{
static int Main(string[] args)  // main method
{
Child child = new Child();    // child object
child.Show();
Console.ReadKey();
return 0;
}
}
}
登录后复制

在上面的示例中,父类包含私有和受保护的字符串。子类是从父类派生的。 Show() 虽然不能访问 private,但可以访问 protected。子类对象用于调用该方法。 Protected 用于保护成员不被类外访问。

输出:

在 C# 中受保护

我们还可以将构造函数声明为受保护的。因此,通过将任何构造函数声明为受保护,我们可以从子类中调用它。

语法:

public class TEst : Test1
{
public Test() : base() // here we can Call the protected base constructor
{
}
}
登录后复制

我们无法调用受保护的方法。我们可以从派生类调用受保护的构造函数。

受保护的内部访问修饰符

在受保护的内部的帮助下,我们可以指定访问仅限于从包含类派生的当前类型。因此,这确保了成员和类型可以由同一类中的代码或另一个程序集中编写的派生类访问。

示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProtectedExample
{
class Demo
{
protected internal string name;    // variable is declared as protected internal
public void print()
{
Console.WriteLine("name is " + name);
}
}
class Program
{
static void Main(string[] args) // main method
{
Demo d = new Demo();
Console.Write("Enter your name:\t");
// Accepting value in protected internal variable
d.name = Console.ReadLine();
d.print();
Console.ReadLine();
}
}
}
登录后复制

输出:

在 C# 中受保护

C# 中 protected 的重要性

受保护的关键字很有用,因为这种类型的变量可以由同一类中使用的代码访问。当我们想要授予子类权限以便它可以访问父类成员时,它很有用。因此从这个意义上说,实现代码可重用性非常重要。

结论

因此我们可以将 protected 与变量一起使用,并使用继承概念来访问它们。它可以用在类本身或子类可以访问成员的地方。

以上是在 C# 中受保护的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板