标签:inter 命名空间 可见 write 适用于 参数类型 led 事件 覆盖
基类的方法被标记为virtual
在派生类中有匹配的override方法
For Example:
class MyBaseClass{
Virtual public void printf(){
Console.WriteLine(“Fuck”);}
}
class MyDerived:MybaseClass{
Override public void printf(){
Console.WriteLine(“Fuck Again”)
}
Class Pargram{
Static void Main(){
MyDerived derived = new MyDerived();
MyBaseClass mybc =(MyBaseClass)derived;
Derived.printf();
Mybc.printf();
}}
结果输出:
Fuck Again
Fuck Again
结论:在覆写后无论有多少继承都是显示最高级别的派生类,由基类一直传递。而使用new可以屏蔽基类,则override无法覆盖到。但基类必须由派生类转换过来。
Public:所有的类,包括程序集内部的类和外部的类和外部的类都可以自由地访问成员。
Private:只能被它自己的类的成员访问。它不能被其他的类访问,包括继承它的类。
Protected:如同访问private访问级别,除了一点,它允许派生自该类的类访问该成员。
Internal:内部成员同一程序集内部的所有类成员都可见,程序集外部类成员不可见。
Protected internal:对所有继承该类的成员或在该程序集内部的类可以访问。
特征:
①必须是一个函数成员。也就是说,字段和常量不能为抽象成员;
②必须用abstract修饰符标记;
③不能有代码块。抽象成员的代码用分号表示。
④必须被覆写,使用override。
可以声明的4个类型方法,属性,事件,索引。
例:
abstract class base{
Public void printfbase(){
Console.Write(“I am your father!”);}
Abstract void printfderived();
}
class derivedclass:base{
Override printfderived(){
Console.Write(“I am your father too!”);}
Class prograg{
Static void main(){
Baseclass base=new baseclass();
Derivedclass dc=new derivedclass();
Base.printfbase();
Dc.printfderived();}
}
输出:
I am your father!
I am your father too
8.密封类:sealed 只能被用作独立的类,不能作为基类。
9.拓展方法,声明拓展的方法必须声明static,拓展方法本身必须声明static。拓展方法必须包含关键字this作为第一个参数类型。
Fox Example:
Namaspace ex{
Sealed class MyData{
private double D1,D2,D3;
Public MyData(double d1,double d2,double d3){
D1=d1;
D2=d2;
D3=d3;}
Public double sum(){
Return D1+D2+D3;}
Static class ExtenMyData{
Public static double Average(this MyData data){
return data.sum/3;}
}
Class Pragram{
Static void main(){
MyData data=new MyData(3,4,5);
Console.WriteLine(“Sum is :{0}”,MyData.sum);
Console.WriteLine(“Average is:{0}”,Mydata.Average();}
}
Pascal 约定 标识符每个单词首字母大写 适用于:类、方法、命名空间、属性和公共字段
Camel 除了第一个单词其他单词首字母大写 适用于:局部变量的名称和方法生命的形参名称
下划线加Camel 以下划线开头的camel大小标识符 适用于:私有和受保护的字段
标签:inter 命名空间 可见 write 适用于 参数类型 led 事件 覆盖
原文地址:https://www.cnblogs.com/dlvguo/p/9736924.html