静态属性 静态构造函数 构造函数 属性 子类 实现顺序

 internal class Program
    {
        private static void Main(string[] args)
        {
            var ret = 2 &1;
         //  B.Print();
            new TestB();
            Console.Read();
        }
    }

    public class Log
    {
        public Log(string str)
        {
            Console.WriteLine(str);
        }
    }

    public class TestA
    {
        public static Log log = new Log("a1");
        public  Log log1 = new Log("a2");

        static TestA()
        {
            new Log("a3");
        }

        public TestA()
        {
            new Log("a4");
        }
    }

    public class TestB:TestA
    {
        public static Log log = new Log("b1");
        public Log log1 = new Log("b2");

        static TestB()
        {
            new Log("b3");
        }

        public TestB()
        {
            new Log("b4");
        }
    }

执行结果:

b1
b3
b2
a1
a3
a2
a4
b4

时间: 2024-10-12 20:52:47

静态属性 静态构造函数 构造函数 属性 子类 实现顺序的相关文章

C#变量初始化问题:字段初始值无法引用非静态字段、方法或属性

http://www.cnblogs.com/bluestorm/p/3432190.html 问题:字段初始值设定项无法引用非静态字段.方法或属性的问题 下面代码出错的原因,在类中定义的字段为什么不能用? public class Test {public Test(){}public int Age=23;public int temp = Age;//ERROR 字段初始值设定项无法引用非静态字段.方法或属性} C#规定在类内部只能定义属性或者变量,并初始化,不能直接变量引用变量. 在初始

Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究

随笔- 40  文章- 0  评论- 1 Java的初始化块.静态初始化块.构造函数的执行顺序及用途探究 Java与C++有一个不同之处在于,Java不但有构造函数,还有一个”初始化块“(Initialization Block)的概念.下面探究一下它的执行顺序与可能的用途. 执行顺序 首先定义A, B, C三个类用作测试,其中B继承了A,C又继承了B,并分别给它们加上静态初始化块.非静态初始化块和构造函数,里面都是一句简单的输出. 主类Main里面也如法炮制. 1 class A { 2 st

静态代码块和构造函数的顺序

最近犯了一个严重的错误,就是静态代码块和构造函数的执行顺序问题,静态代码块是在构造函数之前执行的 public class A { static { System.out.println("static A"); } public A(){ System.out.println("构造 A"); } } public class B extends A { static { System.out.println("static B"); } pu

静态代码块、非静态代码块、构造函数之间的执行顺序

1.执行顺序 静态代码块>非静态代码块>构造函数 public class staticCode { public staticCode() { System.err.println("构造函数"); } { System.err.println("非静态代码块"); } static{ System.err.println("静态代码块"); } public static void main(String[] args) { ne

一、考虑使用静态工厂方法替代构造函数

1.何为静态工厂方法 静态工厂方法就是一个返回类实例的静态方法.比如Boolean的valueof方法: 1 public static final Boolean TRUE = new Boolean(true); 2 public static final Boolean FALSE = new Boolean(false); 3 4 public static Boolean valueOf(boolean b) { 5 return (b ? TRUE : FALSE); 6 } 2.为

34、JavaScript面向对象(内置构造函数&相关方法|属性|运算符&继承&面向对象)

一.面向对象 1.1 this的指向问题 要看清楚最终的函数调用者是谁. IIFE也被当做函数直接运行,IIFE的this都是window对象 函数的arguments是类数组对象,比如传入的第0项参数是函数,让它运行:arguments0,函数中的上下文是arguments对象.还要知道函数的length和arguments.length的区别. 1.2构造函数 当一个函数用new运算符调用时,此时这个函数叫"构造函数"(constructor) 构造函数四步走 创建一个新空对象 t

静态代码块、构造代码块、构造函数以及Java类初始化顺序

静态代码块:用staitc声明,jvm加载类时执行,仅执行一次构造代码块:类中直接用{}定义,每一次创建对象时执行.执行顺序优先级:静态块,main(),构造块,构造方法. 构造函数 public HelloA(){//构造函数 } 关于构造函数,以下几点要注意:1.对象一建立,就会调用与之相应的构造函数,也就是说,不建立对象,构造函数时不会运行的.2.构造函数的作用是用于给对象进行初始化.3.一个对象建立,构造函数只运行一次,而一般方法可以被该对象调用多次. 构造代码块 {//构造代码块 }

java中静态代码块,非静态代码块,构造函数执行顺序

关于静态代码块 静态代码块的写法: static { System.out.println("我是静态代码块"); } 静态代码块的特点: 1.执行优先级高于非静态的初始化块,它会在类初始化的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员. 2.随着类的加载而执行,而且只执行一次 先说一下类加载,一个程序要想运行,首先要把代码加载到内存中,然后才能去和CPU交流,这是冯诺依曼计算机规定的.Java也是一样,Java的.class字节码文件要想执行,首先也

282 继承模式:原型链继承 : 得到方法,借用构造函数 : 得到属性,组合,new一个对象背后做了些什么

1.原型链继承 : 得到方法 function Parent(){} Parent.prototype.test = function(){}; function Child(){} Child.prototype = new Parent(); // 子类型的原型指向父类型实例 Child.prototype.constructor = Child var child = new Child(); //有test() <!DOCTYPE html> <html lang="e

Asp.net动态页面静态化之输出对象属性(实体关联)

Asp.net动态页面静态化之输出对象属性(实体关联) 模板引擎不单单可以输出单一的数据,还能直接输出对象的属性 using System; using System.Collections.Generic; using System.Linq; using System.Web; using NVelocity.Runtime; using NVelocity; using NVelocity.App; namespace czbk { /// <summary> /// Handler2