i am back

be back to square one

类的继承

每本涉及面向对象的书,都会毫无例外的讲到类的三个特点:封装,继承和多态。

 技术部分:

  先引用书中原文:如果一个类继承自一个基类,那么这个类会从基类继承得到所有的操作,属性,特性。。。。。关键就是构造函数。

(property),事件以及这些内容的实现方法。例外的是,类不会从基类继承实例构造函数,析造函数

(又不知道是什么。。。等下查资料去--|)和静态构造函数

   在创建派生类对象时,系统必须先实执行基类的构造函数然后再执行派生类的构造函数。比如说,此时基类的构

造方法有一个参数,那么在派生类中就必须先实现基类的这个带有参数的构造函数。在派生类中可以用base()来引

用基类的构造函数,示例:

    public class BaseClass//基类
    {
        
public BaseClass(string s)
        
{
            Console.WriteLine(
"Str={0}", str);
        }

    }

 

    public class ChildClass:BaseClass//派生类
    {
        
public ChildClass(string str):base(str)//继承基类构造函数
        {
            Console.WriteLine(
"ChildStr={0}",str);
        }

    }

 或者:

    public class ChildClass1 : BaseClass//派生类
    {
        
static string str = "ChildClass1";//这里一定要是静态变量

        
public ChildClass1(): base(str)//继承基类构造函数
        {
            Console.WriteLine(
"Child1Str={0}",str);
        }

    }

 因为基类构造函数在派生类之前,所以上面不用静态变量的话便会出现“XXX要求对象引用”的编译错误。

 测试一下:

    class Program
    
{
        
static void Main(string[] args)
        
{
            Console.WriteLine(
"BaseClass:");
            BaseClass b 
= new BaseClass("BaseClass");
            Console.WriteLine(
"ChildClass:");
            ChildClass c 
= new ChildClass("ChildCalss");
            Console.WriteLine(
"ChildClass1:");
            ChildClass1 c1 
= new ChildClass1();
            Console.Read();
        }

    }

 运行结果如下:

BaseClass:
BaseStr=BaseClass
ChildClass:
BaseStr=ChildCalss
ChildStr=ChildCalss
ChildClass1:
BaseStr=ChildClass1
Child1Str=ChildClass1

posted on 2006-10-17 18:15  I'm back  阅读(134)  评论(0)    收藏  举报

导航