C#继承中构造函数,成员变量的执行顺序

    public class Animal
    {
        static string baseClassName;
        protected string _skincolor;
        Instancevariable iv = new Instancevariable("父类实例成员变量");
        static Instancevariable siv = new Instancevariable("父类静态成员变量");
        static Animal()
        {
            baseClassName = "父类静态构造函数";
            Console.WriteLine(baseClassName);
        }

        public Animal()
        {
            _skincolor = "父类构造函数";
            Console.WriteLine(_skincolor);
        }

    }

    public class Instancevariable
    {
        public Instancevariable(string cls)
        {
            Console.WriteLine(cls);
        }
    }

    public class Horse : Animal
    {
        static string horseClassName;
        Instancevariable iv = new Instancevariable("子类实例成员变量");
        static Instancevariable siv = new Instancevariable("子类静态成员变量");
        public Horse()
            : base()
        {

            _skincolor = "子类类构造函数";
            Console.WriteLine(this._skincolor);
        }

        static Horse()
        {
            horseClassName = "子类静态构造函数";
            Console.WriteLine(horseClassName);
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            Horse h = new Horse();
            Console.ReadLine();
        }
    }
时间: 2024-11-06 18:38:29

C#继承中构造函数,成员变量的执行顺序的相关文章

22.2 继承的 成员变量的执行顺序

/** 继承中成员变量的特点:* 子类只能继承父类的非私有成员* 子父类中成员变量名字是一样的获取的是子类的成员变量*** 就近原则:* 优先级(由近到远)为:局部变量---子类成员变量---父类成员变量**super:子类对象的父类引用.(可以获取父类成员的变量和方法,用法同this)* 调用父类的成员方法和变量*this:当前对象的引用.* 调用子类的成员方法和变量* */ public class 继承成员变量执行优先级 { public static void main(String[]

在java继承中对于成员变量和方法的处理是不同的

body { font-family: 微软雅黑,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5; } html, body { } h1 { font-size:1.5em; font-weight:bold; } h2 { font-size:1.4em; font-weight:bold; } h3 { fon

继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类。 (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法。 (3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承。 (4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。 分析以上程

继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类. (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法.(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承.(4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承. 分析以上程序示例,主要疑惑点是“子类继承父类的成员变量,父类对象是否会实例化?私有成员变量是否会被继承?被继承的成员变量

C++中使用初始化列表比在构造函数中对成员变量赋值更高效

这是在面试中遇到的一个问题,没有答出来,后来上网上查了一些资料,终于弄明白了: 一.首先c++标准规定成员变量必须在调用构造函数前进行初始化(这一点很重要) 二.如果我们在构造函数中对成员变量进行初始化,那么在进入构造函数之前,编译器会调用该成员变量的默认构造函数对成员变量进行初始化,当进入构造函数后,我们对成员变量初始化又会调用复制构造函数,之前的编译器调用的默认构造函数等于浪费了,它做了无用功,降低了效率. 三.如果我们用参数列表的形式对成员变量进行初始化,就不会调用成员变量的默认构造函数了

子类能不能继承父类的成员变量

1.关于私有成员变量无论父类中的成员变量是私有的.共有的.还是其它类型的,子类都会拥有父类中的这些成员变量.但是父类中的私有成员变量,无法在子类中直接访问,必须通过从父类中继承得到的protected.public方法(如getter.setter方法)来访问. 2.关于静态成员变量无论父类中的成员变量是静态的.还是非静态的,子类都会拥有父类中的这些成员变量. 3.关于被子类覆盖的成员变量无论父类中的成员变量是否被子类覆盖,子类都会拥有父类中的这些成员变量.

学习IOS开问题篇--类中的成员变量如果不实例化是什么情况

@interface Person : NSObject @property (noatonmic,copy) NSString * name; @end 一个person类,name是person得成员变量 如果在一个类中写入person为成员变量 self.person.name = @"zhangsan"; 如果前面不将person实例化,实际上是在对一个空指针进行操作 [nil setname:@"zhangsan"]; 因为oc中对空指针发消息不会报错,所

iOS 在类实现定义中声明成员变量的怪异方式

WebGL 规范(WebGL Specification) 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的漂亮人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 看看下面的使用方法,几年前系统地看过 Objective-C 2.0 的官方文档和那本

Objective-c中定义成员变量

ios定义成员变量的方法: 如果只是内部访问,完全可以直接用_xxx(下划线),无需自己定义,编译器会自动生成 如果需要外部访问这个变量,可以用 @property xxx ; @synthesize xxx = _xxx ,这样,编译器会自动生成 get,set函数 :可以很明确的表明这是一个向外部提供set.get方法的属性. http://www.tairan.com/archives/194 Objective-c中定义成员变量

JavaSE8基础 当父类与子类中的成员变量重名了,使用super.名字 来访问父类的成员变量

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: /* * 当父类与子类中的成员变量重名了,使用super.名字 来访问父类的成员变量 */ //基类 class Person { public int num = 1; } //子类 class Javaer extends Person { //子类中的成员变量与父类重名了 public int num