java類實例化語法(類的實例化方法)

本文目錄一覽:

Java知多少(36)內部類及其實例化

在 Java 中,允許在一個類(或方法、語句塊)的內部定義另一個類,稱為內部類(Inner Class),有時也稱為嵌套類(Nested Class)。

內部類和外層封裝它的類之間存在邏輯上的所屬關係,一般只用在定義它的類或語句塊之內,實現一些沒有通用意義的功能邏輯,在外部引用它時必須給出完整的名稱。

使用內部類的主要原因有:

內部類可以訪問外部類中的數據,包括私有的數據。

內部類可以對同一個包中的其他類隱藏起來。

當想要定義一個回調函數且不想編寫大量代碼時,使用匿名(anonymous)內部類比較便捷。

減少類的命名衝突。

請看下面的例子:

1 public class Outer {

2 private int size;

3 public class Inner {

4 private int counter = 10;

5 public void doStuff() {

6 size++;

7 }

8 }

9 public static void main(String args[]) {

10 Outer outer = new Outer();

11 Inner inner = outer.new Inner();

12 inner.doStuff();

13 System.out.println(outer.size);

14 System.out.println(inner.counter);

15 // 編譯錯誤,外部類不能訪問內部類的變量

16 System.out.println(counter);

17 }

18 }

這段代碼定義了一個外部類 Outer,它包含了一個內部類 Inner。將錯誤語句注釋掉,編譯,會生成兩個 .class 文件:Outer.class 和 Outer$Inner.class。也就是說,內部類會被編譯成獨立的字節碼文件。

內部類是一種編譯器現象,與虛擬機無關。編譯器將會把內部類翻譯成用 $ 符號分隔外部類名與內部類名的常規類文件,而虛擬機則對此一無所知。

注意:必須先有外部類的對象才能生成內部類的對象,因為內部類需要訪問外部類中的成員變量,成員變量必須實例化才有意義。

內部類是 Java 1.1 的新增特性,有些程序員認為這是一個值得稱讚的進步,但是內部類的語法很複雜,嚴重破壞了良好的代碼結構, 違背了Java要比C++更加簡單的設計理念。

內部類看似增加了—些優美有趣,實屬沒必要的特性,這是不是也讓Java開始走上了許多語言飽受折磨的毀滅性道路呢?本教程並不打算就這個問題給予一個肯定的答案。

Java類的實例化是什麼,麻煩簡單講解一下最好配合下代碼

1)使用new操作符

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

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

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

最簡單常用的就是你定義了一個類叫InstantiateClass

InstantiateClass ic=new InstantiateClass();

這個new的過程就叫做實例化

Java實例化的幾種方式

1、用new語句創建對象,這是最常見的創建對象的方法。

2、通過工廠方法返回對象,如:String str = String.valueOf(23);

3、運用反射手段,調用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。如:Object obj = Class.forName(“java.lang.Object”).newInstance();

4、調用對象的clone()方法。

5、通過I/O流(包括反序列化),如運用反序列化手段,調用java.io.ObjectInputStream對象的 readObject()方法。

原創文章,作者:C4LTU,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/127470.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
C4LTU的頭像C4LTU
上一篇 2024-10-03 23:15
下一篇 2024-10-03 23:15

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • 解決.net 6.0運行閃退的方法

    如果你正在使用.net 6.0開發應用程序,可能會遇到程序閃退的情況。這篇文章將從多個方面為你解決這個問題。 一、代碼問題 代碼問題是導致.net 6.0程序閃退的主要原因之一。首…

    編程 2025-04-29
  • Python創建分配內存的方法

    在python中,我們常常需要創建並分配內存來存儲數據。不同的類型和數據結構可能需要不同的方法來分配內存。本文將從多個方面介紹Python創建分配內存的方法,包括列表、元組、字典、…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29

發表回復

登錄後才能評論