最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JAVA對象clone方法代碼實例解析

 更新時間:2020年03月13日 14:15:02   作者:斷腿三郎  
這篇文章主要介紹了JAVA對象clone方法代碼實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

1.Cloneable接口

這個接口一個方法都沒有,但是要使用clone方法,就必須實現(xiàn)這個接口,否則拋出CloneNotSupportedException異常

2.clone方法的返回值

先附上兩個類代碼

package pojo;

/**
 * @Author : ZGQ
 * @Date : 2020/3/11 22:12
 * @Version : 1.0
 */
public class Person implements Cloneable{
  String name;
  int age;

  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }

  @Override
  protected Object clone() throws CloneNotSupportedException {
    System.out.println(super.clone().getClass());
    Person p = (Person) super.clone();
    p.name=this.name;
    p.age=this.age;
    return p;
  }
}
package pojo;

/**
 * @Author : ZGQ
 * @Date : 2020/3/11 22:21
 * @Version : 1.0
 */
public class Girl extends Person {
  char cup;

  public Girl(String name, int age, char cup) {
    super(name, age);
    this.cup = cup;
  }

  @Override
  public Object clone() throws CloneNotSupportedException {
    System.out.println(super.clone().getClass());
    Girl girl = (Girl) super.clone();

    girl.cup=this.cup;
    return girl;
  }

  @Override
  public String toString() {
    return "Girl{" +
        "cup=" + cup +
        ", name='" + name + '\'' +
        ", age=" + age +
        '}';
  }
}

我一開始很困惑,為什么clone方法可以將父類的實例交給子類的引用,輸出一看才知道,在第一次clone時,創(chuàng)建的就是子類的對象

再創(chuàng)建一個boys類,或者直接調(diào)用Person.clone也一樣,誰調(diào)用clone方法,就創(chuàng)建誰的實例

調(diào)用girl.clone()

調(diào)用person.clone()

調(diào)用boy.clone()

3.如果一個類沒有實現(xiàn)Cloneable接口,那它就不可以被clone,它的子類也就不可能實現(xiàn)真正的深復(fù)制

多嘴一句,為什么不把clone方法定義在Cloneable中呢?

4.以上寫法就是深復(fù)制的寫法

5.為什么調(diào)用clone出來的是子類的實例呢?

可以顯而易見的是確實這樣比較合乎情理,但是java語言向我們隱瞞了實現(xiàn)細(xì)節(jié),又是一個開后門的語法,像包裝類可以使用運算符直接運算一樣無恥

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java?數(shù)據(jù)結(jié)構(gòu)與算法系列精講之?dāng)?shù)組

    Java?數(shù)據(jù)結(jié)構(gòu)與算法系列精講之?dāng)?shù)組

    數(shù)組是有序的元素序列,若將有限個類型相同的變量的集合命名,那么這個名稱為數(shù)組名。組成數(shù)組的各個變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時也稱為下標(biāo)變量。數(shù)組是在程序設(shè)計中,為了處理方便, 把具有相同類型的若干元素按有序的形式組織起來的一種形式
    2022-02-02
  • spring boot中interceptor攔截器未生效的解決

    spring boot中interceptor攔截器未生效的解決

    這篇文章主要介紹了spring boot中interceptor攔截器未生效的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • JavaSE反射、枚舉、lambda表達(dá)式常用方法舉例

    JavaSE反射、枚舉、lambda表達(dá)式常用方法舉例

    這篇文章主要介紹了JavaSE反射、枚舉、lambda表達(dá)式常用方法的相關(guān)資料,反射允許在運行時檢查和操作類、方法和屬性,枚舉提供了一種更安全和優(yōu)雅的方式來定義常量,而Lambda表達(dá)式則簡化了函數(shù)式接口的實現(xiàn),需要的朋友可以參考下
    2024-12-12
  • Java中的三種代理模式詳解

    Java中的三種代理模式詳解

    這篇文章主要介紹了Java中的三種代理模式詳解,代理模式的關(guān)鍵點是:代理對象與目標(biāo)對象.代理對象是對目標(biāo)對象的擴展,并會調(diào)用目標(biāo)對象,文中提供了部分代碼,需要的朋友可以參考下
    2023-08-08
  • Springboot使用Rabbitmq的延時隊列+死信隊列實現(xiàn)消息延期消費

    Springboot使用Rabbitmq的延時隊列+死信隊列實現(xiàn)消息延期消費

    本文介紹了RabbitMQ的延時隊列和死信隊列,解釋了它們的工作原理及其應(yīng)用場景,延時隊列允許消息在設(shè)定的時間后被消費,結(jié)合實際案例,展示了如何實現(xiàn)和使用延時隊列和死信隊列,感興趣的朋友一起看看吧
    2025-01-01
  • maven打包所有依賴對外提供sdk.jar

    maven打包所有依賴對外提供sdk.jar

    這篇文章主要介紹了maven打包所有依賴,對外提供sdk.jar,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • Java中Klass模型與類加載的詳細(xì)機制

    Java中Klass模型與類加載的詳細(xì)機制

    這篇文章主要介紹了Java中Klass模型與類加載的詳細(xì)機制,java語言是在jvm中運行而jvm是不認(rèn)識java代碼的我們使用javac編譯的class文件jvm是不認(rèn)識的 所以有一個類加載的動作 這個動作就是把class字節(jié)碼拼裝成一個klass類型,需要的朋友可以參考下
    2023-08-08
  • Spring MVC中使用Controller如何進(jìn)行重定向

    Spring MVC中使用Controller如何進(jìn)行重定向

    這篇文章主要介紹了Spring MVC中使用Controller如何進(jìn)行重定向操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • IDEA中maven無法下載源碼的解決方法

    IDEA中maven無法下載源碼的解決方法

    這篇文章主要為大家詳細(xì)介紹了當(dāng)IDEA中maven無法下載源碼時改如何解決,文中通過圖文為大家進(jìn)行了詳細(xì)講解,需要的小伙伴可以參考一下
    2023-08-08
  • SpringBoot零基礎(chǔ)入門之基本操作與概念

    SpringBoot零基礎(chǔ)入門之基本操作與概念

    這篇文章主要介紹了SpringBoot的概念、創(chuàng)建和運行,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07

最新評論

香格里拉县| 阳高县| 龙泉市| 灵台县| 澜沧| 遵义市| 建始县| 台湾省| 星座| 正定县| 永城市| 长垣县| 乌拉特后旗| 凤翔县| 尼木县| 临江市| 五指山市| 宝应县| 乳山市| 武平县| 五指山市| 安达市| 大新县| 溆浦县| 黑水县| 五莲县| 开阳县| 鹤山市| 屯门区| 普洱| 信阳市| 左权县| 青海省| 鞍山市| 康乐县| 兴安盟| 乌鲁木齐县| 舞阳县| 夹江县| 黎平县| 雷波县|