南京達內IT培訓
美國上市IT培訓機構

025-66630866

熱門課程

Java學習中類的實例化的方法

  • 時間:2016-06-16 17:57
  • 發布:南京達內培訓學校
  • 來源:企業面試題

我們在學習java語言的過程中,會慢慢體會到類在java中占據一個非常重要的位置,類是java程序的組織單位,任何的java語句,都要寫在類文件里面,本文南京java培訓達內培訓帶領大家學習類的實例化方法。

Java中,類的實例化方法有四種途徑:

1)使用new操作符

2)調用Class對象的newInstance()方法

3)調用clone()方法,對現有實例的拷貝

4)通過ObjectInputStream的readObject()方法反序列化類

1.ClassInstance.java

 1 import java.io.*;
 2
 3 class ClassInstance implements Cloneable, Serializable {
 4     private String str = "測試...";
 5     public void fun(){
 6         System.out.println(str);
 7     }
 8     public ClassInstance(String str){
 9         System.out.println("有參類的實例化");
10         this.str += str;
11     }
12     public ClassInstance(){
13         System.out.println("無參類的實例化");
14     }
15     public Object clone(){
16         return this;
17     }
18 }

2.ClassInstanceTest.java

 1 import java.io.*;
 2 import java.lang.reflect.*;
 3
 4 public class ClassInstanceTest{
 5     public static void main(String[] args) throws ClassNotFoundException, InstantiationException,
 6            IllegalAccessException, IOException,InvocationTargetException, NoSuchMethodException{
 7 //第一種類的實例化方式
 8 ClassInstance ci01 = new ClassInstance("01");
 9 ci01.fun();
10
11 //第二種類的實例化方式
12 ClassInstance ci02 = (ClassInstance) Class.forName("ClassInstance").newInstance();
13 ci02.fun();
14
15 //第三種類的實例化方式
16 ClassInstance ci03 = (ClassInstance) ci01.clone();
17 ci03.fun();
18
19 //第四種類的實例化方式
20 FileOutputStream fos = new FileOutputStream("ci.tmp");
21 ObjectOutputStream oos = new ObjectOutputStream(fos);
22 oos.writeObject(ci01);
23 oos.close();
24 fos.close();
25         
26 FileInputStream fis = new FileInputStream("ci.tmp");
27 ObjectInputStream ois = new ObjectInputStream(fis);
28         
29 ClassInstance ci04  = (ClassInstance) ois.readObject();
30 ois.close();
31 fis.close();
32         
33 ci04.fun();
34 System.out.println("--------------------額外測試--------------------");
35 ClassInstance ci05 = null;
36 //額外的思考 在第二種類實例化的方式中有沒有一種方法實現有參數的構造方式
37 //獲得類的構造信息
38 Constructor[] ctor = Class.forName("ClassInstance").getDeclaredConstructors();
39 //找到我們需要的構造方法
40 for(int i=0;i<ctor.length;i++ ){
41 Class[] cl = ctor[i].getParameterTypes();
42 if(cl.length == 1){
43 //實例化對象
44 ci05 = (ClassInstance) Class.forName("ClassInstance").getConstructor(cl).newInstance(new Object[]{"05"});
45    }
46  }
47 ci05.fun();
48    }
49 }

3.輸出結果

1 有參類的實例化
2 測試...01
3 無參類的實例化
4 測試...
5 測試...01
6 測試...01
7 -------------------額外測試--------------------
8 有參類的實例化
9 測試...05

除了這幾種情況可以實例化一個Java類對象外,隱式調用實例化也是利用了已上集中情況。例如常見的方法:
1 public class ClassInstance{
2 public ClassInstance(){
3 }
4     public ClassInstance getInstance(){
5 return new ClassInstance();
6 }
7 }

通過觀察結果,我們發現無論哪一種方式必須經過的一步---調用構造方法。無論怎樣構造函數作為初始化類的意義怎樣都不會改變。雖然說學習java是一個比較刻苦的過程,但是沒有刻苦學習,哪會有以后java開發工程師的你,來到南京達內培訓了java培訓課程,相信你的java學習之路會略微輕松的多。
上一篇:java中StringBuffer幾種常用方法
下一篇:判斷 Java 線程并發的安全性
選擇城市和中心
江西省

貴州省

廣西省

海南省

网址在线观看你懂我意思吧