类型构造器与实例构造器

比较实例构造器和类型构造器的区别,类型构造器必须是static,并且不允许定义访问修饰符,类型构造器只能被执行一次。:

 class mybaseclass
    {
         public mybaseclass()
        {
            Console.WriteLine("基类实例构造器");
        }
        static mybaseclass()//类型构造器不允许出现访问修饰符
        {
            Console.WriteLine("基类类型构造器");
        }
        public void test()//这里如果是private/protected,派生类就无法访问
        {
            Console.WriteLine("测试动作");
        }
    }
    class testClass:mybaseclass
    {
        public testClass()
        {
            Console.WriteLine("派生类实例构造器");
        }
        static  testClass()
        {
            Console.WriteLine("派生类的类型构造器");
        }
    }

如果执行以下代码,请猜测输出结果:

class Program
    {
        static void Main(string[] args)
        {
            testClass mytestclass = new testClass();
            mytestclass.test();

            testClass mytestClass2 = new testClass();
            mytestClass2.test();

        }

    }

输出结果如下:

当执行mytestclass时,输出如下顺序:

派生类的类型构造器

基类的类型构造器

基类的实例构造器

派生类的实例构造器

测试动作

当执行mytestclass2时,输出如下顺序:

基类的实例构造器

派生类的实例构造器

测试动作

从上面的结果可以看出,类型构造器先与实例构造器执行,类型构造器只执行一次。

类型构造器与实例构造器

时间: 2024-08-29 16:43:03

类型构造器与实例构造器的相关文章

实例构造器和类型构造器

实例构造器,新建对象时,设置对象的初始状态,平时接触的比较多,就不多说了. 类型构造器(静态构造器,类构造器),用来设置类型的初始状态.类型默认没有定义类型构造器,如果定义,也只能定义一个.此外,类型构造器没有参数,代码示例如下: internal sealed class SomeRefType { static SomeRefType() { // SomeRefType被首次访问时,执行这里的代码 } } 类型构造器的定义类似于无参的实例构造器,区别在于必须将其标记为static.此外,类

vue构造器以及实例属性

一.构造器 1.vue.js就是一个构造器,通过构造器Vue来实例化一个对象:例如:var vm = new Vue({}); 2.实例化Vue时,需要传入一个参数(选项对象): 3.参数:选项对象可以包含,数据(data).挂载元素(el).方法(methods).模版(template).生命周期函数等等: 4.扩展构造器Vue,从而用预定义选项创建可复用的组件构造器,所有组件都是被扩展的Vue的实例,使用Vue.extend({})来扩展: 注意:尽管可以命令式地创建扩展实例,不过在多数情

008-Scala主构造器、私有构造器、构造器重载实战详解

008-Scala主构造器.私有构造器.构造器重载实战详解 Scala主构造器实战 无参数的主构造器 分析 1.name 需要赋初值,一般通过占位符来代表空值 2.private 声明私有的age 生成的getter/setter方法也是私有的;不加则私有的age生成公有的getter/setter方法 3.private[this] 表示是只属于当前的实例本身,别人无法通过实例访问,也就是说再实例化对象也不可以访问此属性 4.def定义辅助构造器(重载构造器),其他的重载构造器必须调用主构造器

Scala主构造器和辅助构造器

注:1.本文主要参考自<快学Scala>2.使用jd-gui反编译   Scala的构造方法跟Scala很相似,也可以有任意多的构造器.在Scala中构造器分为主构造器和辅助构造器 在Scala中可以包括一个主构造器和任意多个辅助构造器 主构造器 在Scala中,每个类都有主构造器.而且主构造器的定义是跟类定义交织在一起的. 主构造器的参数是直接放置在类名后面的,如下: class Person(val name:String,val age:Int) { //your code } 主构造器

Spring 类构造器初始化实例

构造方法类Bean1 package com.hao947.bean; public class Bean1 { public Bean1() { System.out.println("bean1...构造方法"); } public void show(){ System.out.println("bean1...方法"); } } 配置文件applicationContext.xml <?xml version="1.0" encod

获取构造器并使用构造器创建对象

package Reflect; import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException; class Student{ int age; String name; public Student() { System.out.println("调用无参构造器创建对象"); } public Student(int age,String name) { this.age

请问什么是便利构造器(快速构造器)

今天在查找的时候,发现这个比较浅显易懂,记录下,下面的是人家的回复 http://bbs.itheima.com/thread-112451-1-1.html 1.便利构造器是一种快速创建对象的方式.它本质上是把初始化方法做了一次封装,方便外界使用 2.便利构造器是一个类方法(以+开头) 类似于Java中的构造方法, 指的是在init的时候,同时给属性变量赋值的方法 比如 @interface Person : NSObject{ int _age; NSString *_name; } - (

子类构造器与父类构造器

子类不能继承父类的构造器(构造方法或者构造函数),但是父类的构造器带有参数的,则必须在子类的构造器中显式地通过super关键字调用父类的构造器并配以适当的参数列表. 如果父类有无参构造器,则在子类的构造器中用super调用父类构造器不是必须的,如果没有使用super关键字,系统会自动调用父类的无参构造器. class SuperClass { private int n; SuperClass(){ System.out.println("SuperClass()"); } Super

[转载]STL之next_permutation函数对各种类型的全排列实例

转载自http://blog.sina.com.cn/s/blog_9f7ea4390101101u.html 这是一个求一个排序的下一个排列的函数,可以遍历全排列,要包含头文件<algorithm>下面是以前的笔记    与之完全相反的函数还有prev_permutation  (1) int 类型的next_permutation int main(){ int a[3];a[0]=1;a[1]=2;a[2]=3; do{cout<<a[0]<<" &qu