多态的理解:
1、静态多态 方法重载
2、动态多态 继承实现
new 的用法:
- 作为运算符,用于创建对象和调用构造函数,范围用得最多吧。
- 实现多态。
- 作为修饰符,用于向基类成员隐藏继承类成员,一般继承情况下,扩展基类方法用得多。
- 作为泛型参数约束,用于在泛型声明中约束用作类型参数的参数类型,这个也好像用得多吧。
using System;
using System.Collections.Generic;using System.Linq;
using System.Text;
namespace MyTest
{
public class A {
public A() {
Console.WriteLine("A");
}
public virtual void Fun1()
{
Console.WriteLine("A.FunA1");
}
public virtual void Fun2()
{
Console.WriteLine("A.FunA2");
}
}
public class B : A
{
public B() {
Console.WriteLine("B");
}
//public override void Fun() {
// Console.WriteLine("B.Fun");
//}
new public virtual void Fun1()//由于方法只是被隐藏了,没有被重写 所有还是调用的基类的方法
{
Console.WriteLine("B.FunB1");
}
public override void Fun2()//方法已经重写,所以调用的子类的方法。
{
Console.WriteLine("B.FunB1");
}
}
class Program
{
static void Main(string[] args)
{
A a = new B();
a.Fun1();
a.Fun2();
}
}
}
运行结果: