第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

對(duì)于其中一段例題代碼有一個(gè)疑問,如下所示:

對(duì)于其中一段例題代碼有一個(gè)疑問,如下所示:

德瑪西亞99 2023-04-24 17:19:19
最近在自學(xué)Introduction to Java Programming那本書,package testOOP;public class House implements Cloneable, Comparable {private int id;private double area;private java.util.Date whenBuilt;public House(int id, double area) {this.id = id;this.area = area;whenBuilt = new java.util.Date();}public double getId() {return id;}public double getArea() {return area;}public java.util.Date getWhenBuilt() {return whenBuilt;}/** Override the protected clone method defined in the Objectclass, and strengthen its accessibility */public Object clone() {try {return super.clone();}catch (CloneNotSupportedException ex) {return null;}}/** Implement the compareTo method defined in Comparable */public int compareTo(Object o) {if (area > ((House)o).area)return 1;else if (area < ((House)o).area)return -1;elsereturn 0;}public static void main(String[] args){House house1 = new House(1, 200.12);House house2 = (House)house1.clone();}}1,不明白的就是House類是Object類的子類那么就相應(yīng)繼承Protected native Object clone()這一方法,可為什么書上說必須覆蓋此方法并將修飾符改為public以便任何包中均可使用?難道不改,House類的實(shí)例house1就不能使用嗎?(在我刪去覆蓋的clone()方法后,Eclipse提示錯(cuò)誤Unhandled exception type CloneNotSupportedException)2,我不刪去整個(gè)方法,只是刪去try-catch塊留下return super.clone()也是提示錯(cuò)誤Unhandled exception type CloneNotSupportedException,這是為什么?
查看完整描述

2 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊

Object類的方法:
protected native Object clone() throws CloneNotSupportedException;

1、如果不實(shí)現(xiàn)clone,那么執(zhí)行到House house2 = (House)house1.clone(); 會(huì)報(bào)錯(cuò),因?yàn)镠ouse沒有clone方法,不能克隆。
將clone()修飾符改為public,是因?yàn)檫@樣可以在外部調(diào)用house.clone(),否則重載就沒有意義。

2、如果去掉try...catch...,編譯return super.clone();會(huì)報(bào)錯(cuò),因?yàn)閟uper.clone()定義時(shí)聲明了異常,所以在調(diào)用時(shí),必須捕獲這個(gè)異常。如果不捕獲,在House.clone()方法聲明也可以:
public Object clone() throws CloneNotSupportedException;
這樣,你在調(diào)用house.clone()時(shí)就必須try...catch...

查看完整回答
反對(duì) 回復(fù) 2023-04-27
?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

e house2 = (House)house1.clone(); 
要使用這個(gè)就必須實(shí)現(xiàn)cloneable接口,不實(shí)現(xiàn)就報(bào)錯(cuò)
Object的現(xiàn)實(shí)是if(!this instanceof Cloneable){throw new CloneNotSupportedException();}


查看完整回答
反對(duì) 回復(fù) 2023-04-27
  • 2 回答
  • 0 關(guān)注
  • 409 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)