知识大全 用构建器自动初始化

Posted

篇首语:她其实只是想要个拥抱,可你却总是在讲道理。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用构建器自动初始化相关的知识,希望对你有一定的参考价值。

    对于方法的创建 可将其想象成为自己写的每个类都调用一次initialize() 这个名字提醒我们在使用对象之前 应首先进行这样的调用 但不幸的是 这也意味着用户必须记住调用方法 在Java中 由于提供了名为 构建器 的一种特殊方法 所以类的设计者可担保每个对象都会得到正确的初始化 若某个类有一个构建器 那么在创建对象时 Java会自动调用那个构建器——甚至在用户毫不知觉的情况下 所以说这是可以担保的!  接着的一个问题是如何命名这个方法 存在两方面的问题 第一个是我们使用的任何名字都可能与打算为某个类成员使用的名字冲突 第二是由于编译器的责任是调用构建器 所以它必须知道要调用是哪个方法 C++采取的方案看来是最简单的 且更有逻辑性 所以也在Java里得到了应用 构建器的名字与类名相同 这样一来 可保证象这样的一个方法会在初始化期间自动调用   下面是带有构建器的一个简单的类(若执行这个程序有问题 请参考第 章的 赋值 小节)     //: SimpleConstructor java  // Demonstration of a simple constructor  package c ;    class Rock    Rock() // This is the constructor    System out println( Creating Rock );         public class SimpleConstructor    public static void main(String[] args)     for(int i = ; i < ; i++)     new Rock();      ///:~    现在 一旦创建一个对象   new Rock();  就会分配相应的存储空间 并调用构建器 这样可保证在我们经手之前 对象得到正确的初始化   请注意所有方法首字母小写的编码规则并不适用于构建器 这是由于构建器的名字必须与类名完全相同!  和其他任何方法一样 构建器也能使用自变量 以便我们指定对象的具体创建方式 可非常方便地改动上述例子 以便构建器使用自己的自变量 如下所示     class Rock    Rock(int i)     System out println(      Creating Rock number + i);         public class SimpleConstructor    public static void main(String[] args)     for(int i = ; i < ; i++)     new Rock(i);         利用构建器的自变量 我们可为一个对象的初始化设定相应的参数 举个例子来说 假设类Tree有一个构建器 它用一个整数自变量标记树的高度 那么就可以象下面这样创建一个Tree对象     tree t = new Tree( ); // 英尺高的树    若Tree(int)是我们唯一的构建器 那么编译器不会允许我们以其他任何方式创建一个Tree对象   构建器有助于消除大量涉及类的问题 并使代码更易阅读 例如在前述的代码段中 我们并未看到对initialize()方法的明确调用——那些方法在概念上独立于定义内容 在Java中 定义和初始化属于统一的概念——两者缺一不可   构建器属于一种较特殊的方法类型 因为它没有返回值 这与void返回值存在着明显的区别 对于void返回值 尽管方法本身不会自动返回什么 但仍然可以让它返回另一些东西 构建器则不同 它不仅什么也不会自动返回 而且根本不能有任何选择 若存在一个返回值 而且假设我们可以自行选择返回内容 那么编译器多少要知道如何对那个返回值作什么样的处理 cha138/Article/program/Java/Javascript/201311/25417

相关参考

知识大全 默认构建器

    正如早先指出的那样默认构建器是没有自变量的它们的作用是创建一个空对象若创建一个没有构建器的类则编译程序会帮我们自动创建一个默认构建器例如    //:DefaultConstructorjav

知识大全 用VB.NET为智能设备编写半自动初始化类

用VB.NET为智能设备编写半自动初始化类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一引言  

知识大全 在构建器里调用构建器

    若为一个类写了多个构建器那么经常都需要在一个构建器里调用另一个构建器以避免写重复的代码可用this关键字做到这一点  通常当我们说this的时候都是指这个对象或者当前对象而且它本身会产生当前对

知识大全 从内部类继承

  由于内部类构建器必须同封装类对象的一个句柄联系到一起所以从一个内部类继承的时候情况会稍微变得有些复杂这儿的问题是封装类的秘密句柄必须获得初始化而且在衍生类中不再有一个默认的对象可以连接解决这个问题

知识大全 构建器的调用顺序

  构建器调用的顺序已在第章进行了简要说明但那是在继承和多形性问题引入之前说的话    用于基础类的构建器肯定在一个衍生类的构建器中调用而且逐渐向上链接使每个基础类使用的构建器都能得到调用之所以要这样

知识大全 构建器内部的多形性方法的行为

  构建器调用的分级结构(顺序)为我们带来了一个有趣的问题或者说让我们进入了一种进退两难的局面若当前位于一个构建器的内部同时调用准备构建的那个对象的一个动态绑定方法那么会出现什么情况呢?在原始的方法内

知识大全 Java中的构建器

Java中的构建器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  为违例编写代码时我们经常要解决

知识大全 了解C#特性:对象集合初始化器[1]

了解C#特性:对象集合初始化器[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在写一些实体

知识大全 了解C#特性:对象集合初始化器[2]

了解C#特性:对象集合初始化器[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  后来我发现我

手提自动播种施肥器使用方法

1、使用该播种器,须提前筛去小粒杂质,去除霉变破损粒,选用籽粒均匀发芽率高的优良种子。使用包衣剂时应晾干后再用,否则会糊住滚籽轴,影响下种准确性。出现此情况应将轴轮卸下用水清洗,切勿用利器刮除,清理干