- class Program
- {
- static void Main(string[] args)
- {
- //new在这里作为运算符
- Person p = new Chinese();
- p.Walk();
- }
- }
- class Person
- {
- public virtual void Walk()
- {
- Console.WriteLine("父类中的Walk方法");
- }
- }
- class Chinese : Person
- {
- //new在这里作为修饰符
- public new void Walk()
- {
- Console.WriteLine("子类中的Walk方法");
- }
- }
复制代码 new作为运算符时可以创建一个没有成员的对象。
在上例中它创建了一个Person类的对象p
它为p调用构造函数,如果这个类里面有参数,它可以传递一个引用,作为 this 指针。
然后,构造函数可以根据传递给它的参数初始化p。
new作为修饰符时用于向基类成员隐藏继承成员。
如上例中它在子类Chinese中写了一个全新的Walk方法从而隐藏了父类Person中的同名方法,而不是重写
所以p.Walk调用方法时调用的是父类中的Walk方法 |