zoukankan      html  css  js  c++  java
  • c# 继承特点(1)

    namespace console_class_继承
    {
        class Program
        {
            public static void Main(string[] args)
            {
                
                Dog d = new Dog();
                
                d.run();
                
                new Dog(50);
                Console.ReadKey(true);
            }
        }
        
        
        class Animals{
            
            public Animals(){ //可以不用实现
                Console.WriteLine("我是父类默认构造函数");
            }
            public Animals(string name){
                Console.WriteLine(name);
            }
            
            public virtual void run(){
                
                
                Console.WriteLine(string.Format("class:{0} i`m running", this)); //这里是派生于animal 子类dog指针
                
                
                
                walk();//这里还是通过向上查找原则,找到父类中的实现;
            }
            
            
            protected virtual void walk(){ 
                
                Console.WriteLine("now, i`m walking... father");
            }
        }
        
        
        class Dog: Animals{
            
            public Dog():base("leo"){ //如果没有基类没有默认构造函数,则必须通过base指定对应的构造函数
                Console.WriteLine(111);
            }
    //        
            public Dog(int weight):this(50, 100){ //通过this 来调用其他构造,先调用,在执行
                
                Console.WriteLine("调用完this在执行");
            }
            
            public Dog(int weight, int height){
                
                Console.WriteLine("我被其他构造函数通过this来调用了");
                
            }
            public override void run(){
                
                
                base.run();
            }
            
            public void eat(){
                
                Console.WriteLine("跑完就吃...");
            }
    //        protected override void walk(){ //我们屏蔽掉这段实现
    //            
    //            Console.WriteLine("now, i`m walking...");
    //        }
        }
        
        //1、子类可以通过base关键字调用基类的属性方法;
        //2、派生类初始化
        //        -> 初始化子类属性,字段
        //        -> 初始化父类子类属性,字段
        //      -> 初始化父类构造器
        //        -> 初始化派生类构造器
        //3、如果派生类没有显试调用基类构造函数,如果基有默认构造则调用默认函数
        //4、如果基类有多个构造函数,但没有默认构造函数,则必须通过派生类base关键字来显式调用
        //5、类中有多个构造,可以通过this在初始化时,调用其他构造函数
    }
  • 相关阅读:
    AODV路由协议的路由缓存队列详解
    NS各种常用资料(转)
    Zigbee之旅(二):第一个CC2430程序——LED灯闪烁实验(转)
    计算机核心期刊一览【转】
    NS2中能量模型的添加
    Zigbee之旅(一):开天辟地(转)
    NS2能量模型
    Zigbee之旅(三):几个重要的CC2430基础实验——外部中断(转)
    如何画MDI主窗体的背景
    Speed up the display of Delphi list components
  • 原文地址:https://www.cnblogs.com/alplf123/p/10188770.html
Copyright © 2011-2022 走看看