C#二、重载、重写、虚拟、抽象、new、接口

二、重载、重写、虚拟、抽象、接口

一,overload(重载)

重载用于方法

例如:

namespace lianxi
{
    class A
    {
        public A()
        {
            Console.WriteLine("方法重载;方法名称一样");
        }
        public A(string name, int nl)
        {
            Console.WriteLine("方法重载;参数个数不一样");
        }
        public A(int nl, string name)
        {
            Console.WriteLine("方法重载;参数顺序不一样");
        }
        public A(int nl, double sg)
        {
            Console.WriteLine("方法重载;参数类型不一样");
        }
    }
}

二,override(重写)

重写用于方法

重写要求
1、重写的方法名称,参数,返回值与父类的原方法要相同
2、父类的原方法必须必须声明为virtual(虚拟)或者是abstract(抽象)类型

public class Override
{
    public virtual void talk()
    {
        Console.WriteLine("one");
    }
}
public class my : Override
{
    public override void talk()
    {
        Console.WriteLine("two");
    }
}

三,virtual(虚拟)

用于需要重写方法的修饰

表示该方法可以被子类重写,但不是必须重写

四,abstract(抽象)

用于类、方法
表示方法没有实现,子类必须重写

凡是包含抽象方法的类都是抽象类

对于抽象类:目点是用来被其它类继承的,它代表一类对象的所具有的公共属性或方法,那个这个类就应该设置为抽象类,抽象类不必非得包含抽象方法,抽象类不能实例化

五,new

  1. 作为运算符: 创建对象或结构体实例
  2. 作为修饰符: 隐藏基类中的同名成员
  3. 作为泛型约束: 限制类型参数必须具备无参构造函数

这里主要讲作为修饰符的作用:其可以隐藏父类中的同名成员

class BaseClass
{
    public void Show()
    {
        Console.WriteLine("BaseClass Show");
    }
}
 
class DerivedClass : BaseClass
{
    public new void Show()
    {
        Console.WriteLine("DerivedClass Show");
    }
}

六,interface(接口)

接口的用法可以当做类、,接口声明默认是 public 的,接口成员默认也是public,接口命令通常以字母I开头

如:

interface IMyInterface
{
    void MethodToImplement();
}

接口和抽象类是相似的,但有以下区别

接口 抽象类
接口只能定义成员,但不能实现 除了抽象方法不能实现,可以有具体实现
接口成员不能使用修饰符 抽象类成员可以使用任意修饰符
继承接口的类必须隐式或显式实现接口中的所有成员 抽象类必须重写所有的抽象成员
posted @ 2026-10-28 10:35  安康111  阅读(3)  评论(0)    收藏  举报