亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

最后是按老師的意思輸出了,但請問有更簡潔的代碼嗎?

public?class?Test?{
???public?static?void?main(String[]?args)?{
	???Vehicle?bike=new?Bike();
???????Vehicle?bus=new?Bus();
???????Vehicle?metro=new?Metro();
???????Vehicle?plane=new?Plane();
???????Vehicle?ship=new?Ship();
???????bike.sittingPeople=1;
???????bike.wayOfTranstpotaiton="road";
???????bus.sittingPeople=40;
???????bus.wayOfTranstpotaiton="road";
???????metro.sittingPeople=1000;
???????metro.wayOfTranstpotaiton="road";
???????plane.sittingPeople=300;
???????plane.wayOfTranstpotaiton="sky";
???????ship.sittingPeople=800;
???????ship.wayOfTranstpotaiton="sea";
???????bike.feature();
???????bus.feature();
???????metro.feature();
???????plane.feature();
???????ship.feature();
???????
}???????????
}

我創建了5個交通工具,并且通過了父類對象引用賦值及其方法,最后都能夠輸入:

巴士特性:人數:40運輸方式:road

地鐵特性:人數:1000運輸方式:road

飛機特性:人數:300運輸方式:sky

輪船特性:人數:800運輸方式:sea

但是這樣的寫法太啰嗦,不知道有沒有同學有更簡潔的代碼供參考?

正在回答

2 回答

你這代碼就不符合面向對象原則 屬性字段為什么不封裝起來 直接訪問這是大忌。要么構造訪問要么用getter setter。

2 回復 有任何疑惑可以回復我~
#1

lorenzt 提問者

謝謝提點!
2015-05-14 回復 有任何疑惑可以回復我~
#2

lorenzt 提問者

能否修改一小段看看,由于getter and setter 是首先先在父類定義好是嗎?
2015-05-14 回復 有任何疑惑可以回復我~
#3

lorenzt 提問者

能否給點代碼看看?
2015-05-14 回復 有任何疑惑可以回復我~
#4

你存在 回復 lorenzt 提問者

Vehicle這個不知道你定義的是接口還是一個類,假如他是一個類,你就根據它的具體功能來封裝它,首先就封裝它的屬性 sittingPeople 注意這個屬性要是private 是無法通過對象.sittingPeople獲取修改的,這時候你就需要有getter setter方法在Vehicle類中 public void setSittingPeople(int sittingPeople){this.sittingPeople=sittingPeople}; public int getSittingPeople(){return this.sittingPeople;}
2015-05-14 回復 有任何疑惑可以回復我~
#5

lorenzt 提問者 回復 你存在

謝謝我已經改好了,Vehicle(父類吧) 這個是一個類來的,里面的參數我已經用private封裝了,然后利用sorce快速創建了getter and setter方法,然后再父類中也寫了feature方法void feature(){System.out.println(); 當然子類哪里會override這個方法 void feature(){System.out.println("單車特性:"+"人數:"+getSittingPeople()+"運輸方式:"+getWayOfTranstpotaiton());}},然后最后在主函數(test類)在異一一賦值,最后能夠輸入,以下是代碼:
2015-05-14 回復 有任何疑惑可以回復我~
#6

lorenzt 提問者

其實還有有點不太明白(還是新手),就是我還是不明白,要是有人打開了我的Vehicle 類,修改里面的getter and setter方法這樣不也能夠把我的數據弄壞嗎?或者它直接把Vehicle類里面的private去掉或者改為public 等等這樣不都沒有起到“防盜”的作用?
2015-05-14 回復 有任何疑惑可以回復我~
查看3條回復

可以使用構造函數。 Vehicle vic=new?Bike("road",1000);

??????????????????????????????????????????? vic.feature();

??????????????????????????????????????????? vic = new Bus("sky",800);

??????????????????????????????????????????? vic.feature();

2 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第二季 升級版
  • 參與學習       531142    人
  • 解答問題       6326    個

課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙

進入課程

最后是按老師的意思輸出了,但請問有更簡潔的代碼嗎?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號