zoukankan      html  css  js  c++  java
  • 面向对象旅程及继承

    面向对象(第一章)
    1.1面对对象
    对象的产生:首先在内存中分配空间,再初始化必须的附加成员,再调用构造函数执行初始化。
    对象有类型:值类型(堆栈) 引用类型(托管堆)
    对象有访问权限:Public(所有成员)   protected(派生类)  internal(同一程序集中)  private(私用,管好自己就可以了)
    多态:
    1.接口实现多态:定义一个接口IPeople,实现不同的方法Dowork().  IPeople PatHome=new PeopleAtHome();IPeolpe patSchool=new PeopleAtSchool();
     2.抽象类实现多态。
    Gc垃圾回收机制:对象没有被应用程序引用就可以被回收。
    对象就是生成在CLR环境中(类比人在社会中)
    对象从出生到死亡的一个总过程。
     
    1.2继承
      继承是类与类的一种关系。
      有版本问题一般定义为抽象类:动物--(鸡,鸭)(IS-A)
      不同种类同一样的行为,一般定义为 接口(CAN-DO)
    继承的本质,还是要看对象创建的过程。
    /// <summary>
    
        /// 动物抽象类
    
        /// </summary>
    
        public abstract class Animal
    
        {
    
            public abstract void ShowType();
    
            void Eat() {
    
                Console.WriteLine("All Animal always eat");
    
            }
    
        }
    
     
    
        /// <summary>
    
        /// 鸟类:实现动物类的方法
    
        /// </summary>
    
        public class Brid : Animal
    
        {
    
            private string type = "bird type";
    
            //重写
    
            public override void ShowType()
    
            {
    
              Console.WriteLine("Type is {0}",type);
    
            }
    
     
    
            private string color;
    
     
    
            public string Color
    
            {
    
                get { return color; }
    
                set { color = value; }
    
            }
    
        }
    
     
    
     
    
        public class Eadg:Brid,IFable
    
        {
    
            private string type = "Eadg";
    
            public override void ShowType()
    
            {
    
                Console.WriteLine("Type is {0}", type);
    
            }
    
            public void ShowColor()
    
            {
    
                Console.WriteLine("Color is {0}", Color);
    
            }
    
     
    
            public void Fly()
    
            {
    
                Console.WriteLine("我能飞啊");
    
            }
    
        }
    
     
    
        interface IFable
    
        {
    
            void Fly();
    
        }
    定义一个动物抽象类,抽象方法和一个实现公用方法。
    定义一个实现了抽象类的鸟类,实现抽象方法,并定义私用字段和公有属性。
    定义一个具体 Eadg类,继承鸟类,并实现接口。
    现在来看Eadg e=new Eadg();创建过程
    Eadg e创建了一个Eadg类的引用,new Eadg()创建对象,
    1.先创建字段,从父类开始,父类私用,公用字段在上,子类在下,如果有同名的则重命名。
    2.再创建方法表,方法和字段的创建过程一样。方法表是在类第一次加载的时候就创建了,之后用TypeHandle指向方法表。
    Brid b=new Eadg();
    引用类型决定在对象在方法表中的访问权限。
     b.Type 关注就近原则。
    看到37页
     
  • 相关阅读:
    【BZOJ-3712】Fiolki LCA + 倍增 (idea题)
    【BZOJ-1941】Hide and Seek KD-Tree
    【BZOJ-2400】Spoj839Optimal Marks 最小割 + DFS
    【BZOJ-3709】Bohater 贪心
    【BZOJ-2342】双倍回文 Manacher + 并查集
    【BZOJ-3790】神奇项链 Manacher + 树状数组(奇葩) + DP
    【BZOJ-4568】幸运数字 树链剖分 + 线性基合并
    【BZOJ-4520】K远点对 KD-Tree + 堆
    【BZOJ-4127】Abs 树链剖分 + 线段树 (有趣的姿势)
    【BZOJ-2648&2716】SJY摆棋子&天使玩偶 KD Tree
  • 原文地址:https://www.cnblogs.com/netlove/p/3356600.html
Copyright © 2011-2022 走看看