Net复习笔记:第一章:继承

继承

  1. 继承就是面向对象中类与类之间的一种关系
  2. 继承按着实现方式的不同一般分为两类,实现继承(直接继承其他的类),接口继承(继承只接口)CLr支持实现单继承和接口多继承
  3. 子类中实现父类虚方法的方式叫做方法的动态绑定

生命对象Bird bird=new Bird();这个过程发生了什么

  1. Bird bird这个是创建一个Bird的引用
  2. New Bird()创建一个Bird的对象,并且初始化这个对象,分配内存空间,然后把这个对象引用赋给bird变量,建立bird和Bird的关系
  3. 对象初始化的时候,会先找到他的父类,为其父类分配内存空间,而父类还会去找更上层的父类分配内存空间,一直类推到system.object为止
  4. 对象的初始化就是完成所有父类和自身的内存创建,并且字段的顺序是由上到下,父类在前面,
  5. 子类不光继承了父类的共有成员,也继承了父类的私有成员只是在子类中不能访问父类的共有成员
  6. 继承可以传递

把父类引用指向子类

/// <summary>

    /// 抽¨¦象¨®类¤¨¤

    /// </summary>

    public abstract class Animal

    {

        public Animal()

        {

            var str = "222";

        }

        public abstract void ShowType();

 

        public void Eat()

        {

            HttpResponse response = HttpContext.Current.Response;

            response.Write("Animal always eat.");

        }

    }

 

    public class Bird : Animal

    {

        public Bird()

        {

            type = "222";

        }

        private string type = "Bird";

        public override void ShowType()

        {

            HttpResponse response = HttpContext.Current.Response;

            response.Write("type is " + type);

        }

 

        public string color { get; set; }

    }

 

    public class ChicKen : Bird

    {

        public ChicKen()

        {

            type = "111";

        }

        HttpResponse response = HttpContext.Current.Response;

        private string type = "ChicKen";

        public override void ShowType()

        {

           

            response.Write("type is " + type);

        }

 

        public void ShowColor()

        {

            response.Write(color);

        }

    }

 

Bird bird2=new Chicken();

  1. 他的bird2.ShowType(),和bird2.type返回值是什么

Bird2.ShowType()这个会调用ChicKen类的方法所有放回的是type is ChicKen

bird2.type的返回值是222

  1. 这种父类引用指向子类对象的操作遵守如下原则

(1)【关注对象原则】调用的是父类还是子类,取决于对象是父类还是子类,而不是他的类型(new 初始化的作用)

(2)执行就近原则(就是与类型最近的类),对于同名的字段或者方法编译器是按照顺序查找,访问离他最近的

根据这两个原则Bird2.ShowType为什么会返回type is ChicKen

因为Bird bird2=new Chicken()声明的是一个Chicken()对象,Chicken()对象里面的ShowType

重写了父类的ShowType方法(由于ShowType被重写了,所以Bird里面的ShowType就是Chicken

的ShowType方法),而bird2.type根据(执行就近原则),他会先调用自身的type属性,如果没有在找父类,所以它的返回值是bird

3.值类型是密封的所以只能实现接口不能继承类

 

 

posted @ 2013-12-10 18:11  瀚海行舟  阅读(119)  评论(0编辑  收藏  举报