C#类的访问修饰符决定了它们能被访问的范围,包括类本身、类的成员变量和方法。常用的访问修饰符有4种,分别是public、private、protected和internal。
- public
public访问修饰符是最常用的访问修饰符之一。它的作用是使类、变量和方法可以在程序的任何地方访问。被public修饰的变量和方法可以被其他类继承,而继承后的类也可以访问它们。
示例1:
public class Person {
public string name;
public void SayHello() {
Console.WriteLine("Hello, my name is " + name);
}
}
在示例1中,Person类被public修饰,因此可以在程序的任何地方使用。它包含了一个公共变量name和一个公共方法SayHello(),可以被其他类继承并访问。
- private
private访问修饰符用于限制变量或方法的作用域,使其仅在定义它们的类内部可见。这种修饰符可以有效地保护程序的隐私性和安全性,因为类的使用者无法直接访问其中的私有变量和方法。
示例2:
public class Person {
private string name;
public void SetName(string newName) {
name = newName;
}
public void SayHello() {
Console.WriteLine("Hello, my name is " + name);
}
}
在示例2中,Person类被public修饰,但它包含了一个私有变量name。私有变量只能在定义它们的类内部使用,因此不能被其他类直接访问。Setname()方法是public的,可以被其他类调用以设置私有变量name的值。而SayHello()方法也是public的,但它在输出消息之前需要访问到name变量,由于name是私有的,因此只能在Person类内部使用。
- protected
protected访问修饰符与private修饰符相似,但它允许派生类访问父类中的成员变量和方法。这种修饰符可以用于抽象类和继承中,提高了代码的复用性和可维护性。
示例3:
public class Person {
protected string name;
public void SayHello() {
Console.WriteLine("Hello, my name is " + name);
}
}
public class Student : Person {
public void SetName(string newName) {
name = newName;
}
}
public class Main {
static void Main() {
Student student = new Student();
student.SetName("Bob");
student.SayHello();
}
}
在示例3中,Person类包含了一个受保护的变量name和一个公共方法SayHello()。由于变量name是受保护的,因此只能在Person类和它的派生类中访问。子类Student继承自Person,并包含一个SetName()方法来设置父类中的name变量。在Main方法中,我们首先创建了一个Student对象,然后调用SetName()方法设置name的值为"Bob"。最后,调用SayHello()方法输出消息。
- internal
internal访问修饰符限制了它们所属的程序集内的访问权限。程序集是指在开发环境中生成的一组可执行文件和相关资源文件,包含了目标程序的所有代码和数据。该修饰符可以用于定义一个“friend”类,提高代码的内部访问性。
示例4:
internal class Person {
internal string name;
}
public class Main {
static void Main() {
Person person = new Person();
person.name = "Bob";
}
}
在示例4中,Person类被internal修饰,是无法在其他程序集中使用的。因此,Main类也必须在同一个程序集内才能使用Person类。在Main方法中,我们创建了一个Person对象并调用它的name变量,并将其设置为"Bob"。由于Person类是internal修饰的,因此可以在Main类中使用它的name变量。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#类的访问修饰符用法分析 - Python技术站