《你必须知道的.net》读书笔记-继承本质论

继承:

   继承就是面向对象中类与类之间的一种关系。继承的类成为子类,派生类。
被继承的类称为父类,基类 超类。使得子类就有父类的属性跟方法。同时子类也可以通过加入
新的属性很方法或者修改父类的属性和方法建立新的类层次。
  继承机制体现了面向对象技术红的复用性,扩展性和安全性。为面向对象软件开发与模块话软件架构
提供了最基本的技术基础

  分类:
   1实现继承(单一继承).
   2接口继承(多继承)。

 

代码
    ///   <summary>
       
///  继承本质论
       
///   </summary>
    
        public   class  Bird : Animal 
       {
           
private   string  type  =   " Bird " ;
           
public   override   void  ShowType()
           {
               Console.WriteLine(
" type is {0} " ,type);
           }
       }
       
private   string  color;
       
public   string  Color 
       {
           
get  {  return  color;}
           
set { color = value;}
       }

       
public   class  Ckicken : Bird 
       {
           
private   string  type  =   " Ckicken " ;
           
public   override   void  ShowType()
           {
               Console.WriteLine(
" type is {0} " , type);
           }
           
public   void  ShowColor() 
           {
               Console.WriteLine(
" Color is {0} " , Color);
           }
       }
       
///   <summary>
       
///  bird2 对象和ckicken 对象在内存布局上是一样的差别就在于其引用指针的类型不同
       
///  bird2 为Bird 的类型指针,而ckicken为Ckicken类型的指针。
       
///  不同的类型指针在虚拟方法表中有不同的附加信息作为标志来区别访问地址区域,称为offset
       
///  不同的类型指针只能在其特定的地址区域内执行,子类覆盖父类事会保证其访问地址区域的一致性
       
///  从而解决了不同类型的类型访问具有不同访问权限问题
       
///   1.执行就近原则:对于同名字段或者方法,编译器是按照顺序查找引用的,
       
///   也就是访问离它创建最近的字段 
       
///   如果type 类型设为public 则在此讲返回“Bird”值 
       
///   这也就是为什么在对象创建时必须将字段按顺序排列,
       
///   而父类要先于子类编译的原因
       
///   </summary>
        public   class  Test 
       {
           
public   static   void  Main() 
           {
               Bird bird2 
=   new  Ckicken();
               Ckicken ckicken 
=   new  Ckicken();
           }
       }

 

 

你可能感兴趣的:(.net)