對象實例化過程

来源:https://www.cnblogs.com/TimerHotel/archive/2019/01/24/java_newObject.html
-Advertisement-
Play Games

對象實例化過程: 1.看類是否已載入,未載入的話先初始化類。 2.在堆記憶體中分配空間。 3.初始化父類的屬性 4.初始化父類的構造方法 5.初始化子類的屬性 6.初始化子類的構造方法 實例: package com.xm.load; public class Animal { static Stri ...


對象實例化過程:

1.看類是否已載入,未載入的話先初始化類。

2.在堆記憶體中分配空間。

3.初始化父類的屬性

4.初始化父類的構造方法

5.初始化子類的屬性

6.初始化子類的構造方法

實例:

package com.xm.load;

public class Animal {

    static String str = "I`m a animal!";

    public String str1 = "I`m 10 years old @Animal";

    static {
        System.out.println(str);
        System.out.println("載入父類靜態代碼塊");
    }

    static void doing() {
        System.out.println("This ia a Animal!");
    }

    public Animal() {
        doing();
        System.out.println(str1);
        System.out.println("Animal 對象實例化");
    }


}

class Dog extends Animal{

    static String str = "I`m a dog!";

    private String str1 = "I`m 10 years old @Dog";

    static {
        System.out.println(str);
        System.out.println("載入子類靜態代碼塊");
    }

    static void doing() {
        System.out.println("This ia a dog!");
    }

    public Dog() {
        doing();
        System.out.println(str1);
        System.out.println("Dog 對象實例化");
    }


    public static void main(String[] args) {
        new Dog();
    }
}

運行結果:

I`m a animal!

載入父類靜態代碼塊

I`m a dog!

載入子類靜態代碼塊

This ia a Animal!

I`m 10 years old @Animal

Animal 對象實例化

This ia a dog!

I`m 10 years old @Dog

Dog 對象實例化

我們來看一下,重寫過的父類方法,在載入父類時的情況。

實例:

package com.xm.load;

public class Animal {

    static String str = "I`m a animal!";

    public String str1 = "I`m 10 years old @Animal";

    static {
        System.out.println(str);
        System.out.println("載入父類靜態代碼塊");
    }

    static void doing() {
        System.out.println("This ia a Animal!");
    }

    public void todoing() {
        System.out.println(str1);
        System.out.println("載入子類的重寫方法");
    }

    public Animal() {
        doing();
        todoing();
        System.out.println("Animal 對象實例化");
    }


}

class Dog extends Animal{

    static String str = "I`m a dog!";

    private String str1 = "I`m 10 years old @Dog";

    static {
        System.out.println(str);
        System.out.println("載入子類靜態代碼塊");
    }

    static void doing() {
        System.out.println("This ia a dog!");
    }

    public void todoing() {
        System.out.println(str1);
        System.out.println("載入子類的重寫方法");
    }

    public Dog() {
        doing();
        System.out.println("Dog 對象實例化");
    }


    public static void main(String[] args) {
        new Dog();
    }
}

結果:

I`m a animal!

載入父類靜態代碼塊

I`m a dog!

載入子類靜態代碼塊

This ia a Animal!

null

載入子類的重寫方法

Animal 對象實例化

This ia a dog!

Dog 對象實例化

由此可見,null代表著載入父類構造方法時,調用的todoing( )方法是子類的方法,且子類的屬性的初始化過程發生在父類構造方法之後。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 簡單的函數: 2.1 帶參數的函數: 2.2 帶參數的函數: 3.1 帶返回值的函數 3.2 帶有參數和返回值的函數 嘗試把返回值用字元串拼接的方式組合了一下,還真成功了 結果: ...
  • 要開始寫Vue的功能了,是不是很激動呢!開始吧! 1、首先建立一個html頁面,導入Vue js包 1 <script type="text/javascript" src="js/vue.min.js"></script> 2、架包導入之後,我們需要創建一個Vue對象,用來綁定元素節點,從而達到操 ...
  • 作為一個後臺開發人員,幾年前參與過Ionic1開發過一微信公眾號的經歷,所以這次開發企業微信應用,就使用了ionic,正好ionic4 rc版本發佈,雖然不是正式版,作為本項目的項目經理,還是決定使用ionic4開發,因為項目組員也是我。簡單記錄一下本次開發的過程,很多命令不經常輸入,就忘記了。 0 ...
  • 一. 範圍不同 readonly 只對 <input> 和 <textarea> 標簽有效 disabled 對所有表單元素都有效, 包括:<input>, <textarea>, <button>, <label>, <option>, <select>等 二. 程度不同 readonly 只是將 ...
  • 昨天碰到這樣一個場景,調用後端介面返回的數據發現所有數據都是正常的,只有一個商品ID的最後兩位是錯的,每一個商品都是,導致無法進行商品的上下架和刪除, 經過查資料發現: 瀏覽器解析數字的坑,一旦超出一定長度最後兩位會精度失準變為兩位隨機數,所以出現這種問題先列印出來 typeof(出錯的數字欄位), ...
  • 一、需求背景: 二、Dubbo和Spring Cloud 的比較 首先Dubbo是一個分散式服務框架,以及SOA治理方案。它的功能主要包括:高性能NIO通訊及多協議集成,服務動態定址與路由,軟負載均衡與容錯,依賴分析與降級等,它是著名的阿裡服務治理的核心框架。Spring Cloud更加關心為開發人 ...
  • 一個分散式服務集群管理通常需要一個協調服務,提供服務註冊、服務發現、配置管理、組服務等功能,而協調服務自身應是一個高可用的服務集群,ZooKeeper是廣泛應用且眾所周知的協調服務。協調服務自身的高可用需要選舉演算法來支撐,本文將講述選舉原理並以分散式服務集群NebulaBootstrap的協調服務N ...
  • 其旨在打造一個集應用開發、大數據存儲、處理、分散式計算、自動化部署的無節點微服務集中開發與運行平臺,以響應業務的快速變更,滿足系統對大數據,大併發與開發效率的需求; 平臺設計以數據為核,以groovy腳本為基礎,通過提供api、非同步消息處理、調度等基礎構件來支持應用的快速開發; 核心是通過整合現有開 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...