1:普通方法的隐藏(new)
标题看了很高深,其实就是在派生类中使用new关键字重写其继承的类中的某个方法。
New关键字可以省略,但是最好不要省略。
基类中:
// 普通方法 public void sleeper() { Console.WriteLine("我是基类中的方法"); }
派生类中:
// 重基类中的sleeper普通方法 public new void sleeper() { Console.WriteLine("我是派生类中的方法"); }
2:base关键字
这个是与virtual联合使用的,在基类中定义了一个虚方法,在派生类中重写此虚方法,但是在调用的时候想通过实例化派生类来调用基类中的虚方法,这里就用到了base关键字。
基类中:
// Virtual虚方法 public virtual string GetResult() { return "我是一个虚方法"; }
派生类中:
// 在派生类中重写Virtual虚方法 public override string GetResult() { return "我是在派生类中重写的虚方法"; } public void tabb() { // 正常调用派生类中的方法 string strr = GetResult(); Console.WriteLine(strr); // 调用基类中的需方法 string stre = base.GetResult(); Console.WriteLine(stre); }
主函数中:
/* C#主要的运行函数,就是main函数 */ static void Main(string[] args) { tarce ta = new tarce(); paisheng pai = new paisheng(); // base 关键字 pai.tabb(); }
3:抽象类和抽象方法(abstract)
这里对抽象方法及抽象类只是简单的介绍,详细请看我的这篇文章《C#中的抽象类(abstract)》
定义抽象方法不需要花括号;
主要应用于继承;
抽象类的方法在派生类中重写也应用override关键字;
在多态中应用;
抽象类不能实例化;
// 定义一个抽象类 public abstract class person { // 抽象类中的抽象方法定义不需要花括号 public abstract void Speak(); } //定义一个派生类继承抽象类 class sheng : person { public override void Speak() { Console.WriteLine("你说啥"); } }
主函数中的方法:
static void Main(string[] args) { //抽象方法测试 sheng sh = new sheng(); sh.Speak(); }
4:密封类和蜜蜂方法(sealed)
密封类中所有方法其派生类都不能继承;
密封方法其派生类也是继承不了的。
// 定义一个密封类 sealed class mifeng{ public void fang() { Console.WriteLine("我是不能被继承的"); } } // 定义一个派生方法,继承密封类 class ji_mifeng : mifeng { public void get() { // fang(); 这么写会报错,密封类不可以继承 } } // 定义一个普通类 class feng { public void aaa (){ Console.WriteLine("我是基类中的普通方法"); } public sealed void bbb() { Console.WriteLine("我是基类中的密封方法"); } } // 定义一个派生类 class ji_pai:feng { public void gets() { aaa(); bbb();//这么写会报错,密封类不可以继承 } }