为了账号安全,请及时绑定邮箱和手机立即绑定

交作业,有没有哪位同学评价一下我的代码,相互学习。

/*

* 程序思想

*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入门第二季 升级版
  • 参与学习       530105    人
  • 解答问题       6086    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

交作业,有没有哪位同学评价一下我的代码,相互学习。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信