C# (初入江湖)-修饰符
c# 修饰符 江湖 初入
2023-09-11 14:14:49 时间
C# (初入江湖)-修饰符
修饰符
访问权限修饰符
访问控制符 | 同类中访问 | 同程序集的子类 | 同程序集的非子类 | 不同程序集的子类 | 不同程序集的非子类 |
---|---|---|---|---|---|
public | ✔ | ✔ | ✔ | ✔ | ✔ |
protected internal | ✔ | ✔ | ✔ | ✔ | |
protected | ✔ | ✔ | ✔ | ||
internal | ✔ | ✔ | ✔ | ||
private | ✔ |
权限修饰符外还有几个修饰符,这几个修饰符可以和上面五个权限修饰符一起用,一般写在权限修饰符后面
- sealed(密封):修饰类的时候表示该类不能够被继承,修饰方法时表示该方法不能被重写(有些像java中的final)
// 以下案例中,B可以继承A,但是没有类可以再继承B了
class A {}
sealed class B : A {}
- abstract(抽象的):可以修饰类也可以修饰成员
- 修饰类的时候表示该类为抽象类,不能够创建该类的实例
- 修饰方法的时候表示该方法需要由子类来实现,如果子类没有实现该方法那么子类必须同样是抽象类
- 抽象类中可能有抽象方法和非抽象方法(抽象方法子类继承后必须要复写)
- abstract 的方法体,不用{ } ,用 ;
abstract class Animal
{
// 抽象方法 ,吃饭,子类继承后必须复写
public abstract void Eat();
// 非抽象方法,子类可不复写
public void Play(){ };
}
class Dog : Animal
{
public override void Eat(){ Console.WriteLine(".....")};
}
- virtual(虚方法):修饰方法成员,子类继承后可以复写被该修饰符修饰的方法(非必须复写)
- override(复写):一般用于复写父类中用virtual 修改的方法
class Animal
{
// 子类可自己选择是否需要 复写
public virtual void Eat();
}
class Dog : Animal
{
// 复写 父类的吃饭方法
public override void Eat(){ Console.WriteLine(".....")};
}
- partial(部分的) :仅用来修饰类;可以将一个类分成几部分写在不同文件中,最终编译时将合并成一个文件,但各个部分不能分散在不同程序集中。在一个class特别大,由几个人合作写时这功能特别有用
- static(静态的):修饰类时表示该类是静态类,不能够实例化该类的对象,该类的成员为都为静态的。同时非静态方法也无法调用静态方法,但静态的方法可以调用非静态的方法。类成员只能通过【类.成员名】的方式访问
// 用在类上面
public static class Person
{
public static void EatHotDog() { /*...*/ }
}
// 在非静态类中,写静态方法
class Person
{
//静态属性
static string name;
// 测试
static void test1()
{
}
}
- const(修饰常量):定义常量,赋值时初始化,并且不能改变值。只能用于基本类型和string (可以用来修改局部变量)
const string Language = "C#";
- readonly(只读): 修饰字段意味着只能读取该字段的值而不能给字段赋值。只能在声明期间或在同一个类的构造函数中向字段赋值(反正只能赋一次值,并且只能修饰字段)
class Person
{
private readonly int _age;
Person(int age)
{
// 构造方法赋值
_age = age;
}
void ChangeAge()
{
// 此处会执行会报错,无法为_age赋值
_age = 33333;
}
}
更多好看的内容和好玩的案例请关注我的微信公众号: 程序猿知秋