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();//这么写会报错,密封类不可以继承
}
}
有好的建议,请在下方输入评论。
欢迎访问个人博客
https://guanchao.site
欢迎访问小程序: