1 隐藏基类的方法
当基类继承一个(非抽象的)成员时,也就继承了其实现代码。如果继承的成员是虚拟的,就可以用override关键字重写这段实现代码。无论继承的成员是否为虚拟,都可以隐藏这些代码。
使用下面的代码就可以隐藏:
public class MyBaseClass
{
public void DoSomething()
{
//Base implementation.
}
public class MyDerivedClass : MyClass
{
public void DoSomething()
{
//Derived class implementation, hide base implementation.
}
}
}
尽管这段代码可以正常运行,三十会产生一个警告,说明隐藏了一个基类成员。如果是无意间隐藏了一个需要使用的成员,此时就可以改正错误。如果确实要隐藏该成员,就可以使用new关键字显式的表明意图:
public class MyDerivedClass : MyBaseClass
{
new public void DoSomething()
{
//Derived class implementation,hide base implementation.
}
}
其工作方式是完全相同的,但是不会出现警告。此时应该注意隐藏基类成员和重写他们的区别。考虑下面的代码:
public class MyBaseClass
{
public vritual void DoSometing()
{
Console.WriteLine("Base imp");
}
}
public class MyDerivedClass : MyBaseClass
{
public override void DoSomething()
{
Console.WriteLine("Derived imp");
}
}
实现如下:
MyDerivedClass myObj = new MyDerivedClass();
MyBaseClass myBaseObj;
myBaseObj = myObj;
myBaseObj.DoSomething();
输出结果:
Derived imp
2 this关键字
与base关键字一样,this也可以用在类成员的内部,且该关键字也引用对象实例。只是this引用的是当前的对象实例(即不在静态成员中使用this关键字,因为静态成员不是对象实例的一部分)。
this关机那字最常用的功能就是把当前对象实例的引用传递给一个方法。
this关键字的另一个常见的用法就是限定本地类型的成员,例如:
public class MyClass
{
private int someData;
public int SomeData
{
get
{
return this.someData;
}
}
}