c#---方法的重载和重写

xiaoxiao2021-02-28  48

前言

  大家可以区分清楚方法的重载和方法的重写吗?什么是方法呢?什么时候使用重载呢?什么时候使用重写呢?

方法

  方法是在类下写的,方法下的代码只保留最关键的代码,方法的语法为:

[访问修饰符] static 返回值 方法名([参数列表]) //static 静态方法 { 方法体 }

如:

public static void show() { Console.WriteLine("今天天气不错!"); }

  此方法是没有参数(括号里没东西),没有返回值(void)的。

  有了方法之后,写代码就变得简单了。

重载

  方法的重载是指:方法名相同,但是参数的个数和类型不同。方法的重载和返回值无关,和参数的个数和类型有关。      上图显示的是MessageBox这个方法一共有21个重载,具体使用哪个就看具体的要求了!

重写

  重写方法发生在多态中,此时子类的方法可以和父类的方法名重名,但是会出现一条绿线,这个时候应该怎么做呢?

  可以在父类的方法的修饰符后面加virtual,变成虚方法,在子类方法的修饰符后面加override,重写父类方法。需要注意的是:子类调用了父类的方法,但是把父类的方法进行了重写,更换了方法里面的内容,都不能再加static,此外,虚方法不能与private一起使用。

  也可以在子类的修饰符后面加new,隐藏父类的方法。需要注意的是:无论是否加new,都不影响使用。

扩展–虚方法和抽象方法

虚方法抽象方法用virtual修饰用abstract修饰要有方法体不允许有方法体可以被子类override必须被子类override除了密封类都可以写只能在抽象类中

练习

public abstract class Animal //定义一个抽象的父类Animal { public Animal(string name) { this._name = name; } string _name; public string name { get { return _name;} set { _name = value;} } public abstract void Shout(); //父类中的一个抽象的方法Shout } public class Pig:Animal //一个子类Pig继承Animal父类 { public Pig (string name) : base(name) { } public override void Shout() //子类的Shout方法,重写父类的Shout方法 { Console.WriteLine("{0}哼哼哼哼哼",this.name); } }

总结

  了解方法的重载和重写,重载我们经常会遇到,相对来说也是好理解的,重写一般在多态中,我们需要了解什么是多态,理解方法的重写,多做几个练习。

转载请注明原文地址: https://www.6miu.com/read-2621487.html

最新回复(0)