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

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

交作業,有沒有哪位同學評價一下我的代碼,相互學習。

/*

* 程序思想

*1. 按照老師的要求敲的代碼,并能在MyEclipse 2014上跑起來

*2.?能夠根據讓用戶自己輸入交通工具能夠乘坐的人數

*3. 運用了前面學的知識,算做一種復習

*/

//父類Traffic代碼塊

package com.aslife.traffic;


//用于被各種類型交通工具子類繼承的父類

public class Traffic {

int trafficSums; //定義一個變量用于保存交通工具能乘坐乘客的數量

String trafficName; //定義一個變量用于保存交通工具的名稱


public void showData(){

System.out.println(trafficName + "這種交通工具能夠乘坐" + trafficSums + "人");

return ;

}

}

//子類Car代碼塊

package com.aslife.traffic;


//輸出汽車信息的之類

public class Car extends Traffic {

//擁有參的構造方法用于接收用戶輸入的信息

public Car(int newTrafficSums){

trafficName = "Car"; //修改父類的trafficName變量

trafficSums = newTrafficSums; //將用戶輸入的信息賦值給變量newTrafficSums

}

}

//子類Steamboat代碼塊

package com.aslife.traffic;


//輸出輪船信息的子類

public class Steamboat extends Traffic {

//擁有參的構造方法用于接收用戶輸入的信息

public Steamboat(int newTrafficSums){

trafficName = "Steamboat"; //修改父類的trafficName變量

trafficSums = newTrafficSums; //將用戶輸入的信息賦值給變量newTrafficSums

}

}

//子類Airplane代碼塊

package com.aslife.traffic;


//輸出飛機信息的子類

public class Airplane extends Traffic {

//擁有參的構造方法用于接收用戶輸入的信息

public Airplane(int newTrafficSums){

trafficName = "Airplane"; //修改父類的trafficName變量

trafficSums = newTrafficSums; //將用戶輸入的信息賦值給變量newTrafficSums

}

}

//入口類InitialTraffic代碼塊

package com.aslife.traffic;

import java.util.Scanner;

//入口類

public class InitialTraffic {


public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner input = new Scanner(System.in);

System.out.println("請輸入汽車能乘坐的乘客數量:");

//創建對象car并通過Car方法類的構造函數根據用戶輸入的信息對Car方法類中的變量進行修改

Traffic car = new Car(input.nextInt());

car.showData();

System.out.println("請輸入輪船能乘坐的乘客數量:");

//創建對象steamboat并通過steamboat方法類的構造函數根據用戶輸入的信息對steamboat方法類中的變量進行修改

Traffic steamboat = new Steamboat(input.nextInt());

steamboat.showData();

System.out.println("請輸入飛機能乘坐的乘客數量");

//創建對象airplane并通過airplane方法類的構造函數根據用戶輸入的信息對airplane方法類中的變量進行修改

Traffic airplane ?= new Airplane(input.nextInt());

airplane.showData();

}


}

//歡迎各位同學指出缺點


正在回答

6 回答

既然是由用戶輸入,我覺得可以加一個判斷,比如判斷輸入的是不是一個整數,是不是數值

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

weibo_肖邦在對我微笑_0 提問者

每次讓用戶輸入的時候都有提示需要輸入乘坐的人數,不過沒有判斷輸入的數據的數據類型還是是疏忽了。
2016-12-02 回復 有任何疑惑可以回復我~
#2

weibo_肖邦在對我微笑_0 提問者

剛又在MyEclipse上跑了一下,如果輸入的是String類型的數據的話程序會報錯,因為構造函數需要接收的是一個int類型的常量,謝謝你的意見,謝謝!
2016-12-02 回復 有任何疑惑可以回復我~
#3

weibo_肖邦在對我微笑_0 提問者

非常感謝!
2016-12-02 回復 有任何疑惑可以回復我~

//修改父類的trafficName變量 ?你修改的這個變量有什么用?

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

weibo_肖邦在對我微笑_0 提問者

這個變量從父類繼承過來用來儲存車的名字的,注釋的表達方式可能有點錯誤。
2017-03-18 回復 有任何疑惑可以回復我~

父類Traffic的showData()方法里的return;有什么作用?感覺多余了吧。

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

weibo_肖邦在對我微笑_0 提問者

我用C語言寫程序時候的一個個人習慣,可以不加的,把方法前面的返回值數據類型void去掉就可以了。
2017-02-25 回復 有任何疑惑可以回復我~
#2

qq_兵冰賓繽_0

額是啊
2017-04-09 回復 有任何疑惑可以回復我~

學習到了。謝謝樓主

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

原來如此

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

其實能夠說下像這種多態的用處嗎?Traffic steamboat = new Steamboat();為何不直接寫成Steamboat steamboat = new Steamboat();不也一樣能繼承嗎?

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

weibo_肖邦在對我微笑_0 提問者

你首先要明白你所說的‘父類的引用可以指向子類的對象‘ 有什么好處。 好處就是可以解耦合,比如你需要一個List類,你可以這樣實例化ArrayList list = new ArrayList(); 也可以List list = new ArrayList(); 那么現在的問題來了 現在的需求是ArrayList已經無法滿足你的要求了,你需要換成LinkedList,如果按照第一種寫法那么你需要做的工作可能比較多了,除了修改list的類型,還要考慮的是你換成LinkedList的時候,你之前用ArrayList所調用的方法LinkedList是沒有的,這倒也及加多了你的工作量。
2016-12-08 回復 有任何疑惑可以回復我~
#2

weibo_肖邦在對我微笑_0 提問者

如果你按第二種方式來實現,那么你只需將List list = new LinkedList()即可,你無須在擔心之前所調用的方法 。 當然現在更好的做法,是把List list;通過spring來修改的,這樣的話就完全不需要改變代碼了,也就符合設計原則的幾大思想了。樓主在認真想想,應該就能理解的了。 當然多態并不只有你這種情況哦,同樣的方法名,參數不同也為多態。。 網上照搬的回答,希望對你有幫助。
2016-12-08 回復 有任何疑惑可以回復我~
#3

weibo_肖邦在對我微笑_0 提問者

按照我的理解就是,假如你不需要一個父類的子類對象轉而需要這個父類對象引用指向另一個子類對象的時候不需要逐行修改代碼。
2016-12-08 回復 有任何疑惑可以回復我~

舉報

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

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

進入課程

交作業,有沒有哪位同學評價一下我的代碼,相互學習。

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

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

幫助反饋 APP下載

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

公眾號

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