人力资源网站建设方案,wordpress添加说说,关键时刻,网站开发文本编辑器一、Base关键词的几种用法base重要用于OOP的多态上#xff0c;base 关键字用于在派生类中实现对基类公有或者受保护成员的访问#xff0c;但是只局限在构造函数、实例方法和实例属性访问器中1、base调用基类构造函数using System;namespace BaseDemo
{class Program{static v… 一、Base关键词的几种用法base重要用于OOP的多态上base 关键字用于在派生类中实现对基类公有或者受保护成员的访问但是只局限在构造函数、实例方法和实例属性访问器中1、base调用基类构造函数using System;namespace BaseDemo
{class Program{static void Main(string[] args){B b new B();Console.ReadLine();}}public class A{public A(){Console.WriteLine(Build A);}}public class B : A{public B() : base(){Console.WriteLine(Build B);}}
}
执行结果 2、base在派生类中调用基类的方法using System;namespace BaseDemo
{class Program{static void Main(string[] args){B b new B();b.Hello();Console.ReadLine();}}public class A{public virtual void Hello(){Console.WriteLine(Hello);} }public class B : A{public override void Hello(){base.Hello();}}
}
执行结果二、this关键字1、 this代表当前类的实例对象using System;namespace thisDemo
{class Program{static void Main(string[] args){A a new A();a.GetName();Console.ReadKey();}}public class A{private string name qxh;public void GetName(){string name 欢迎你;// this代表A的实例对象// 所以this.name对应的是qxh// name对应的是GetName方法内的局部变量Console.WriteLine($ {this.name} - {name});}}
}
执行结果 2、 用this串联构造函数using System;namespace thisDemo
{class Program{static void Main(string[] args){A a new A(qxh);Console.ReadKey();}}public class A{public A(){Console.WriteLine(无参构造函数);}// this()对应无参构造方法A()// 先执行A()后执行A(string text)public A(string text) : this(){Console.WriteLine(text);Console.WriteLine(有参构造函数);}}
}执行结果 3、扩展方法using System;namespace thisDemo
{class Program{static void Main(string[] args){string name qxh;Console.WriteLine(name.ShowInfo(欢迎你));Console.ReadKey();}}/// summary/// 必须是静态类/// /summarypublic static class A{public static string ShowInfo(this string str, string info){return ${str}-{info};}}
}执行结果 4、索引器参数可以是int,也可以是string等其他类型using System;namespace thisDemo
{class Program{static void Main(string[] args){A a new A();Console.WriteLine(a[qxh]);Console.ReadKey();}}public class A{public string Name { get; set; }//索引器 []括号里面可以是string,int,array等public string this[string index]{get{if (index qxh){return index;}else{return gg;}}set{Name value;}}}
}执行结果 三、New关键字1、new 运算符用于创建对象和调用构造函数1特点new一个class时new完成了以下两个方面的内容一是调用new class命令来为实例在托管堆中分配内存;二是调用构造函数来实现对象初始化。new一个struct时new运算符用于调用其带构造函数完成实例的初始化。new一个int时new运算符用于初始化其值为0。new运算符不可重载。new分配内存失败将引发OutOfMemoryException异常。2demostatic void Main(string[] args)
{A a new A();//new操作符 创建对象和调用构造函数 Console.ReadKey();
}
2、new 修饰符new 关键字可以显式隐藏从基类继承的成员new 关键字可以显式隐藏从基类继承的成员。 隐藏继承的成员时该成员的派生版本将替换基类版本。 虽然可以在不使用 new 修饰符的情况下隐藏成员但会生成警告。 如果使用 new 显式隐藏成员则会取消此警告并记录要替换为派生版本这一事实。下面是隐藏 A中的Name属性public class A
{public string Name { get; set; } qxh;
}public class B : A
{new public string Name { get; set; } dachong;
}3、new 约束用于在泛型声明中约束可能用作类型参数的参数的类型new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。如果要使用 new 约束则该类型不能为抽象类型。当与其他约束一起使用时new() 约束必须最后指定public class ATwhere T : IComparable, new()
{}
四、override关键字 要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现必须使用 override 修饰符。 由 override 声明重写的方法称为重写基方法。重写的基方法必须与 override 方法具有相同的签名。不能重写非虚方法或静态方法。 重写的基方法必须是 virtual、abstract 或 override 的。用关键字 virtual 修饰的方法叫虚方法。可以在子类中用override 声明同名的方法这叫“重写”。相应的没有用virtual修饰的方法我们叫它实方法。 using System;namespace thisDemo
{class Program{static void Main(string[] args){B b new B();b.Show();Console.ReadKey();}}public class A{public virtual void Show(){Console.WriteLine(A);}}public class B : A{public override void Show(){Console.WriteLine(B);}}
}执行结果五、abstract关键字用关键字abstract定义的类即为抽象类且只能作为基类也不能被实例化。用abstract定义的类不一定包含抽象方法也可以包含非抽象方法。abstract定义的方法一定包含在抽象类中。抽象类不能定义为密封类sealed抽象方法不能使用virtual、static、private修饰符如果派生类没有实现所有的抽象方法则该派生类也必须声明为抽象类。