C#:study(5)--构造函数和继承性
@base关键字
它有两种用途:1、调用基类的构造函数;2、访问派生类覆盖的基类成员。
如:(base的第一种用法)派生类一旦指定了一个base语句,就会调用直接基类的构造函数。如果没有base语句,就会自动调用基类的缺省构造函数。//基类构造函数为:
public TwoDShape(double w,double h){}
//派生类构造函数为:
public Triangle(string s,double w,double h):base(w,h){}
@继承和隐藏
关键字new可以隐藏与派生类相同的基类变量和方法;用关键字base可以调用被派生类隐藏的基类变量和方法。如:
using System;
class A
{
public int i = 0;
public void show()
{
Console.WriteLine("i in base class: "+i);
}
}
class B:A
{
new int i
public B(int a,int b)
{
base.i = a;
i = b;
}
new public void show()
{
base.show();
Console.WriteLine("i in derived class: "+i);
}
}
//test
class UncoverName
{
public static void Main()
{
B ob = new B(1,2);
ob.show();
}
}
@派生类引用赋给基类变量
//情况一:类X是类Y的基类,在Main函数中
X a = new X();
X u;
Y b = new Y();
u = b;//正确
//情况二:类X是类Y的基类,在Y函数的定义中
public X(X ob){...}//类X中定义的构造函数
public Y(Y ob):base(ob){...}//类Y中定义的构造函数@inheritance(继承)
public sealed class XX//防止继承
//类型转换
Account acc = new CheckAccount();
CheckAccount chk = acc;//Error
CheckAccount chk = (CheckAccount)acc;//ok
如果acc不是CheckAccount的对象,那么运行时就会抛出System.InvalidCastException

}
浙公网安备 33010602011771号