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

最后是按老师的意思输出了,但请问有更简洁的代码吗?

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

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

进入课程

最后是按老师的意思输出了,但请问有更简洁的代码吗?

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