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

正在回答

8 回答

虽然你这样实现也可以,但其实你这么实现并没有用到多态

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

写的很好呀,比我的好多了,我的很简洁,没有用很多东西,而你把之前的知识都贯通了


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

比如说你没必要构造父类的无参构造方法,虚拟机会自动帮忙构建,还有Print方法那边我习惯写成this.属性/方法,因为this可以代表当前对象,在任何情况下都是适用的,而get...只适用于封装的时候。总体代码没啥问题,是我刚刚看错了。

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

当然,这只是我个人的理解


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

其实我之前表述有误,错误也不多,只是代码还可以在优化,外加一两个小问题


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

不是的,我只是为了方便才这样写的,你可以在构造函数里就把参数传进去,这样你每次创建新的对象时都会要求你先把该对象的属性赋值(传参),然后执行构造方法创建对象,这样就不会麻烦了

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

package com.nuist.transport;

public class PractiseTransport {
 private String ways;
 private String personNum;
 private String conveyance;
 public void PracticeTransportation(){
 }
 public void print(){
  System.out.println("使用"+this.conveyance+"在"+this.ways+"运输"+this.personNum+"人");
 }
 public String getWays() {
  return ways;
 }
 public void setWays(String ways) {
  this.ways = ways;
 }
 public String getPersonNum() {
  return personNum;
 }
 public void setPersonNum(String personNum) {
  this.personNum = personNum;
 }
 public String getConveyance() {
  return conveyance;
 }
 public void setConveyance(String conveyance) {
  this.conveyance = conveyance;
 }
 
}

package com.nuist.transport;

public class PractisePlane extends PractiseTransport{
 public PractisePlane(){
  this.setConveyance("飞机");
  this.setPersonNum("200");
  this.setWays("天空");
 }
}

package com.nuist.transport;

public class PractiseShip extends PractiseTransport {
 public PractiseShip(){
  this.setConveyance("轮船");
  this.setPersonNum("150");
  this.setWays("海洋");
 }
}

package com.nuist.transport;

public class PractiseBus extends PractiseTransport {
 public PractiseBus(){
  this.setConveyance("公共汽车");
  this.setPersonNum("40");
  this.setWays("公路");
 }
}

package com.nuist.transport;

public class Test {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  PractiseTransport a=new PractisePlane();
  PractiseTransport b=new PractiseShip();
  PractiseTransport c=new PractiseBus();
  a.print();b.print();c.print();
 }

}

刚刚写的,你可以参考下,你的代码小错误很多,要不把前面的视频再看看??

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

每天学一点明天会更好 提问者

哪方面的理解错误了,我看了下,是子类构造不要传参,直接在this.setConveyance("公共汽车");这样传参吗,如果后期做的需要修改参数,不是会很麻烦吗
2018-12-31 回复 有任何疑惑可以回复我~

弄了很久,都理解不是那么透彻,尤其get,set,super,this,抽象。

还有在什么时候父类需要构建有参的构造方法?

car[] cars={new lorry ("松花江",4.0, 400),

    new lorry ("依维柯",20.0,1000),

    new pika ("皮卡雪", 2, 2, 450),

    new passengerCar("马自达", 4, 400),

    new passengerCar("奥迪A4", 4, 500)};

然后new lorry("依维柯",20.0,1000).show();这个是方法多态么?

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

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       529937    人
  • 解答问题       6086    个

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

进入课程

请问我这个练习题理解行吗

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