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
- 作为运算符: 创建对象或结构体实例
- 作为修饰符: 隐藏基类中的同名成员
- 作为泛型约束: 限制类型参数必须具备无参构造函数
这里主要讲作为修饰符的作用:其可以隐藏父类中的同名成员
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();
}
接口和抽象类是相似的,但有以下区别
| 接口 | 抽象类 |
|---|---|
| 接口只能定义成员,但不能实现 | 除了抽象方法不能实现,可以有具体实现 |
| 接口成员不能使用修饰符 | 抽象类成员可以使用任意修饰符 |
| 继承接口的类必须隐式或显式实现接口中的所有成员 | 抽象类必须重写所有的抽象成员 |

浙公网安备 33010602011771号