zoukankan      html  css  js  c++  java
  • 组合语法-域的初始化

      复用代码是Java的功能之一,复用代码一般有两种方式。一种是组合,即在新的类中产生现有类的对象。由于新的类由现有类的对象组成,所以这种方式称为组合。该方法只是复用了现有程序代码的功能,而非它的形式。

      域中得类为基本类型时能够自动初始化为零。对象引用会被初始化为null,而且如果试图为他们调用任何方法都会得到一个--运行时错误。很方便的是,再不抛出任何异常的情况下仍可以打印一个null引用。

      编译器并不简单的为为每一个引用创建默认对象,如果想初始化这些引用,可以在代码的下列位置进行初始化:

    1.在定义的对象的地方。这意味着他们总能够在构造器被调用之前被初始化。

    2.在类的构造器中。

    3.就在正要使用这些对象之前,这种方式惰性初始化。在生成对象不值得及不必每次都生成对象的情况下,这种方式可以减轻额外负担。

    4.使用实例初始化。

     1 // Constructor initialization with composition
     2 
     3 Calss Soap{
     4   private String s;
     5   Soap(){
     6      System.out.println("Soap()");
     7      s = "Constructed";  
     8   }    
     9   public String toString() {return s;}
    10 }
    11 
    12 public class Bath{
    13   private String // initializing at point of definition
    14     s1 = "Happy",
    15     s2 = "Happy",
    16     s3,s4;
    17     private Soap castille;
    18     private int i;
    19     private float toy;
    20     Public Bath(){
    21       System.out.println("Inside Bath()");
    22       s3 = "3.14";
    23       toy = 3.14f;
    24       castille = new Soap();
    25     }
    26   public String toString(){
    27      if(s4==null) // Delay initialization
    28         s4 == "Joy";
    29      return 
    30         "s1 = " + s1 + "
    " + 
    31         "s2 = " + s2 + "
    " + 
    32         "s3 = " + s3 + "
    " +
    33         "s4 = " + s4 + "
    " +
    34         "i = " + i + "
    " +
    35         "toy = " + toy + "
    " +
    36         "castitle = " + "castitle";  
    37   }
    38   public static void main(String[] args){
    39     Bath b = new Bath();
    40     System.out.println(b);
    41   }
    42 }/* Output:
    43 Inside path()
    44 Soap()
    45 s1 = Happy
    46 s2 = Happy
    47 s3 = Joy
    48 s4 = Joy
    49 i = 47
    50 toy = 3.14
    51 castille = Constructed
    52 *///:~        

      注意,在Bath构造器中,有一行语句在所有初始化之前就已经执行了。如果没有在定义处初始化,那么除非发成了不可避免的运行期异常,否则不能保证信息在发送给对象引用前已经被初始化

    在调用toString()之前,他将填充s4的值,以确保所有的域在使用之时已被妥善初始化。

  • 相关阅读:
    Jmeter命令行运行实例讲解
    ab压力测试工具
    F12找到页面某一元素所绑定的点击事件
    F12修改html进行本地js操作页面元素
    JMeter中利用Parameters 和Body Data传递参数有什么不同
    centos7 VNC安装
    centos7安装python3
    linux du命令的疑惑
    centos cgroup配置
    linux下postgres未能正常启动的解决过程
  • 原文地址:https://www.cnblogs.com/jhdcjh/p/10708392.html
Copyright © 2011-2022 走看看