`
bcyy
  • 浏览: 1826747 次
文章分类
社区版块
存档分类
最新评论

实例构造与结构构造(Java/C#)

 
阅读更多

所谓实例构造就是指通常的构造函数带参数的和不带参数的,其中不带参数的构造函数又叫做默认构造函数。而类型构造函数又可称为静态构造函数。例如:

publicclassCustomer...{
publicCustomer()...{...}//instanceconstructor,default
publicCustomer(Typetype)...{...}//instanceconstructorwithargument
staticCustomer()...{...}//typeconstructor
}
其中public Customer(),public Customer(Type type),为实例构造函数,static Customer为类型构造函数,当实例化一个这样的类的时候如:Customer customer = new Customer([Type type])时,CLR首先会调用类型构造函数,然后是实例构造函数。下面看个例子:
publicclassCustomer:Base...{
publicCustomer()...{
System.Console.WriteLine(
"Customerinstanceconstructorwasinvoked.");
}

staticCustomer()...{
System.Console.WriteLine(
"Customertypeconstructorwasinvoked.");
}

}

publicclassBase...{
publicBase()...{
System.Console.WriteLine(
"Baseinstanceconstructorwasinvoked.");
}

staticBase()...{
System.Conole.WriteLine(
"Basetypeconstructorwasinvoked.");
}

}

到创建Customer对象时候,customer = new Customer();时候有如下输出:

Customer type constructor was invoked.

Base type constructor was invoked.

Base instance was invoked.

Customer instance was invoked.

而在Java中却不一样,看下面的例子:

packagemf;
publicclassBase...{
publicBase()...{
System.out.println(
"Baseinstanceconstructorwasinvoked.");
}

static...{
System.out.println(
"Basetypeconstructorwasinvoked.");
}

}

publicclassCustomerextendsBase...{
publicCustomer()...{
System.out.println(
"Customerinstanceconstructorwasinvoked.");
}

static...{
System.out.println(
"Customertypeconstructorwasinvoked.");
}

}

publicclassTest...{
publicstaticvoidmain(String[]args)...{
Customercustomer
=newCustomer();
}


}

其输出结果为:

Base type constructor was invoked.
Customer type constructor was invoked.
Base instance constructor was invoked.
Customer instance constructor was invoked.

分享到:
评论

相关推荐

    c#和java中的构造函数

    涵盖很多重点。我喜欢理论和实例一起整理,所以可以帮到你们。好好加油吧。我相信你看完的传的一个还回看下一个。。

    C#中类和结构的区别 -- 示例详解

    1.虽然结构与类的类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object 2.虽然结构的初始化也使用了New 操作符可是结构对象依然分配在堆栈上而不是堆上,如果不使用“新建”(new),那么...

    CSharp-calls-JAVA-program.rar_C#调用java的dll_c# 调用 java sdk_c#调用ja

    在C#环境下调用JAVA程序的实例代码,添加dll文件后,引用package ,创建环境变量,即可调用java写的类及构造方法

    c#学习笔记.txt

    在 C# 中,类与结构在语义上是不同的。结构是值类型,而类是引用类型。 2, 装箱和拆箱(取消装箱) 装箱是值类型到 object 类型或到该值类型所实现的任何接口类型的隐式转换。将一个值的值装箱会分配一个对象实例并将...

    在一小时内学会 C#(txt版本)

    类与结构 ? 修饰符 ? 属性 ? 接口 ? 函数参数 ? 数组 ? 索引器 ? 装箱与拆箱 ? 委托 ? 继承与多态 以下主题不会进行讨论: ? C++ 与 C# 的共同点 ? 诸如垃圾回收、线程、文件处理等概念 ? 数据类型转换 ? 异常...

    c#学习笔记——学习心得

    向方法传递结构时,是通过传值方式传递的,结构实例化可以不用new,结构可以声明构造函数,但必须带参数,且声明的构造函数是用来对成员初始化的,必须包含每个字段。结构不能从另一个结构或类继承而来,但可以实现...

    C#微软培训资料

    1.2 .NET 与 C#.6 1.3 C#语言的特点.8 1.4 小 结 .11 第二章 运行环境 全面了解.NET.12 2.1 .NET 结构.12 2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 工 具 .17 2.4 小 结 .19 第三章 编写...

    疯狂JAVA讲义

    学生提问:构造器是创建Java对象的途径,是不是说构造器完全负责创建Java对象? 141 5.5.2 构造器的重载 142 学生提问:为什么要用this来调用另一个重载的构造器?我把另一个构造器里的代码复制、粘贴到这个构造器...

    定义一个圆类circle,它有一个变量radius(半径)。从键盘输入数据,通过构造函数的参数传递给radius,编程计算并输出圆的的周长和面积。但是,必须确保输入的数据不为复数。

    定义一个圆类circle,它有一个变量radius(半径)。从键盘输入数据,通过构造函数的参数传递给radius,编程计算并输出圆的的周长和面积。但是,必须确保输入的数据不为复数。

    Visual C#2010 从入门到精通(Visual.C#.2010.Step.By.Step).完整去密码锁定版 I部分

    无论是刚开始接触面向对象编程的新手,还是打算转移到c#的具有c,c++或者java基础的程序员,都可以从本书中吸取到新的知识。 作译者 john sharp,content master首席技术专家。content master隶属于cm集团,cm集团...

    JSON例子简介和使用

    JSON是遵循程序员所熟悉的C族编程语言(包括:C、C++、JAVA、JavaScript、Perl、C#等多种语言)规范的数据交换格式,不但易于被人读写,同时也易于被计算机解析和构造,这些特性使之成为了一种理想的数据交换语言。

    Objective C 单例模式设计源码

    因为Objective C传承了Smalltalk语言,所以在Objective C中实现单例模式和C++和C#以及Java都不太一样。因为要保证类型对象的单一性,所以就要考虑Objective C在实例化对象时候的各种方式。因为在Objective C中创建的...

    初级java笔试题-Dflat-Compiler:Dflat语言,MidFrame技术

    初级java笔试题项目目标: 一维平面 (Db):扩展 C# 以包括有限状态机编程模型、嵌入式 SQL 和时间注释。 2- Port Wao 和 PUR 到 Db。 3- 在 Apache 或 IIS 下创建 Wao 的演示。 数据库描述: D flat 是一种使用 C# ...

    ClassicJS:添加对ES6类的完全私有和受保护的支持,而不会阻止代理

    这意味着您将充分使用当使用C#,Java和C ++等语言时可能已经习惯的访问说明。 您将获得所有这些,而不会失去对任何现有语言功能的支持。特征实例上的私有和受保护成员,即使使用代理包装也是如此。 经典构造函数上...

    正则表达式

    /\s+java\s+/ //匹配字符串"java" ,并且该串前后可以有一个或多个空格. /[^"] * / //匹配零个或多个非引号字符. 正则表达式的复制字符 字符 含义 ________________________________________________________...

    【09-异常处理】

    •异常处理已经成为衡量一门语言是否成熟的标准之一,目前的主流编程语言如C++、C#、Ruby、 Python等,大都提供了异常处理机制。增加了异常处理机制后的程序有更好的容错性,更加健壮。 传统错误处理的缺陷 ...

    二十三种设计模式【PDF版】

    GoF 的《设计模式》是所有面向对象语言(C++ Java C#)的基础,只不过不同的语言将之实现得更方便地使用。 GOF 的设计模式是一座"桥" 就 Java 语言体系来说,GOF 的设计模式是 Java 基础知识和 J2EE 框架知识之间一...

    实现JavaScript中继承的三种方式

    一、原型链继承 在原型链继承方面,JavaScript与java、c#等语言类似,仅允许单父类继承。prototype继承的基本方式如下: 代码如下: function Parent(){} function Child(){} Child.prototype = new Parent(); 通过...

    asp.net知识库

    C#中结构与类的区别 C#中 const 和 readonly 的区别 利用自定义属性,定义枚举值的详细文本 Web标准和ASP.NET - 第一部分 XHTML介绍 在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用...

    alipay-sdk-NET-3.3.0.zip

    ────┤ 支付宝代码示例结构说明 ├──── ╰───────────────────────╯   Visual studio 版本:2010 Framework3.5以上版本 版 权:支付宝(中国)网络技术有限公司 ─────...

Global site tag (gtag.js) - Google Analytics