问答详情
源自:10-1 Java 中的多态

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

父类

https://img4.mukewang.com/5c28c4860001cdb307910500.jpg

飞机

https://img4.mukewang.com/5c28c4860001776406840266.jpg

主函数

https://img.mukewang.com/5c28c4870001cf0508240284.jpg

轮船

https://img.mukewang.com/5c28c487000181db06890273.jpg

客车

https://img1.mukewang.com/5c28c4880001c2b908170265.jpg

提问者:每天学一点明天会更好 2018-12-30 21:19

个回答

  • 北顾岛城
    2019-02-12 21:13:25

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

  • 在线发呆
    2019-01-12 16:31:36

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


  • 慕阳小夜
    2019-01-01 14:36:55

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

  • 慕阳小夜
    2019-01-01 14:21:32

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


  • 慕阳小夜
    2019-01-01 14:17:22

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


  • 慕阳小夜
    2019-01-01 14:12:32

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

  • 慕阳小夜
    2018-12-30 22:18:51

    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();
     }

    }

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

  • 每天学一点明天会更好
    2018-12-30 21:25:26

    弄了很久,都理解不是那么透彻,尤其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();这个是方法多态么?