修饰符
new 使用 new 修饰符显式隐藏从基类继承的成员。若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并用 new 修饰符修饰它。
若用调用基类相同成员请用base.成员
static 使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员。static 修饰符可用于字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类型。
override 重写方法提供从基类继承的成员的新实现。由重写声明重写的方法称为重写基方法。重写基方法必须与重写方法具有相同的签名。
不能重写非虚方法或静态方法。重写基方法必须是虚拟的、抽象的或重写的。
virtual 关键字用于修改方法或属性的声明,在这种情况下,方法或属性被称作虚拟成员。虚拟成员的实现可由派生类中的重写成员更改。
abstract 只负责声明方法,只能做基类,由其派生类完成其具体的实现.
sealed 密封类不能被继承。将密封类用作基类是错误的。在类声明中使用 sealed 修饰符可防止继承此类。
访问修饰符
public 对于访问公共成员没有限制
protected 从声明受保护的成员的类中,以及从声明受保护的成员的类派生的任何类中都可以访问该成员。
class A
{
protected int x = 123;
}
class B : A
{
void F()
{
A a = new A();
B b = new B();
a.x = 10; // Error
b.x = 10; // OK
}
}
语句 a.x =10 将生成错误,因为 A 不是从 B 派生的。
internal 内部成员只有在同一程序集中的文件内才是可访问的
private 访问是允许的最低访问级别。私有成员只有在声明它们的类和结构体中才是可访问的。
readonly 字段修饰符
volatile
-C/C++中未经初始化的变量是不能使用的。在C#中,
系统将为每个未经初始化的变量提供一个默认值。对于所有引用类型的变量,默认值是null
抽象)abstract和虚拟(virtual)
相似:在申明方法的时候,都能被重写
区别:
(抽象)abstract:可以申明类也可以申明方法,申明方法时不能和sealed一起申明,所申明的类必须被继承,申明的方法也必须被重写,申明时没有具体实现,实际上它起一个接口的作用
虚拟(virtual):只能申明方法,可以在申明方法的时候写对应的实现
new 使用 new 修饰符显式隐藏从基类继承的成员。若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并用 new 修饰符修饰它。
若用调用基类相同成员请用base.成员
static 使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员。static 修饰符可用于字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类型。
override 重写方法提供从基类继承的成员的新实现。由重写声明重写的方法称为重写基方法。重写基方法必须与重写方法具有相同的签名。
不能重写非虚方法或静态方法。重写基方法必须是虚拟的、抽象的或重写的。
virtual 关键字用于修改方法或属性的声明,在这种情况下,方法或属性被称作虚拟成员。虚拟成员的实现可由派生类中的重写成员更改。
abstract 只负责声明方法,只能做基类,由其派生类完成其具体的实现.
sealed 密封类不能被继承。将密封类用作基类是错误的。在类声明中使用 sealed 修饰符可防止继承此类。
访问修饰符
public 对于访问公共成员没有限制
protected 从声明受保护的成员的类中,以及从声明受保护的成员的类派生的任何类中都可以访问该成员。
class A
{
protected int x = 123;
}
class B : A
{
void F()
{
A a = new A();
B b = new B();
a.x = 10; // Error
b.x = 10; // OK
}
}
语句 a.x =10 将生成错误,因为 A 不是从 B 派生的。
internal 内部成员只有在同一程序集中的文件内才是可访问的
private 访问是允许的最低访问级别。私有成员只有在声明它们的类和结构体中才是可访问的。
readonly 字段修饰符
volatile
-C/C++中未经初始化的变量是不能使用的。在C#中,
系统将为每个未经初始化的变量提供一个默认值。对于所有引用类型的变量,默认值是null
抽象)abstract和虚拟(virtual)
相似:在申明方法的时候,都能被重写
区别:
(抽象)abstract:可以申明类也可以申明方法,申明方法时不能和sealed一起申明,所申明的类必须被继承,申明的方法也必须被重写,申明时没有具体实现,实际上它起一个接口的作用
虚拟(virtual):只能申明方法,可以在申明方法的时候写对应的实现