温故而知新-重读类的继承(半技术半心情贴)

 

   以前不知在哪个人Bolg上看过一句话,说,永远不要认为书看过一遍就够了。今天翻翻书,才知道这话果然不

假。每本涉及面向对象的书,都会毫无例外的讲到类的三个特点:封装,继承和多态。原本以为看的不想再看的内

容,再翻一翻,居然发现有当初不知是遗漏还是遗忘的知识点。。。。。当下就十分惭愧,特发此文,引以为戒。

##########################################################################

  技术部分:

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

(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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值