带有超级关键字的问题

问题描述 投票:-2回答:1
import java.util.*;

class Aircraft{
    String aircraftName;
    String source;
    String destination;
    void setdetails(String aircraftName,String source,String destination){
        this.aircraftName=aircraftName;
        this.source=source;
        this.destination=destination;
    }
    void Aircraft(String aircraftName,String source,String destination){

    }
    void displayDetails(){
        System.out.println("Aircraft Name : "+aircraftName);
        System.out.println("Source : "+source);
        System.out.println("Destination : "+destination);
    }
}

class PublicAircraft extends Aircraft{
    private Integer noOfKgsallowed;
    private float additionalFeeperkg;
    private Boolean checkinbeforetwohours=true;
    void setdetails(int noOfKgsallowed,float additionalFeeperkg){
        this.noOfKgsallowed=noOfKgsallowed;
        this.additionalFeeperkg=additionalFeeperkg;
    }
    public void PublicAircraft(String aircraftName,String source,String destination,Boolean checkinbeforetwohours,int noOfKgsallowed,float additionalFeeperkg){
    }
    void displayDetails(){
        System.out.println("Aircraft Type : Public Aircraft");
        super.displayDetails();
        System.out.println("Check in before two hours : "+checkinbeforetwohours);
        System.out.println("Number of Kgs allowed per person : "+noOfKgsallowed);
        System.out.println("Additional fee charged for extra baggage per kg"+additionalFeeperkg);
    }
}

class PrivateAircraft extends Aircraft{
    private Boolean checkinbeforetwohours=false;
    private String pilotPreference;
    private String purpose;
    void setdetails(String pilotPreference,String purpose){
        this.pilotPreference=pilotPreference;
        this.purpose=purpose;
    }
    void PrivateAircraft(String aircraftName,String source,String destination,Boolean checkinbeforetwohours,String pilotPreference,String purpose){

    }
    void displayDetails(){
        System.out.println("Aircraft Type : Private Aircraft");
        super.displayDetails();
        System.out.println("Check in before two hours : "+checkinbeforetwohours);
        System.out.println("Pilot Name : "+pilotPreference);
        System.out.println("Purpose :"+purpose);
    }
}

class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String aircraftName=sc.next();
        String source=sc.next();
        String destination=sc.next();
        Aircraft a=new Aircraft();
        a.setdetails(aircraftName,source,destination);
        int type=sc.nextInt();
        if(type==1){
            PublicAircraft pub=new PublicAircraft();
            Integer noOfKgsallowed=sc.nextInt();
            float additionalFeeperkg=sc.nextInt();
            pub.super().setdetails(aircraftName,source,destination);
            pub.setdetails(noOfKgsallowed,additionalFeeperkg);
            pub.displayDetails();
            sc.close();
        }
        else{
            PrivateAircraft priv=new PrivateAircraft();
            priv.super().setdetails(aircraftName,source,destination);
            String purpose=sc.next();
            String pilotPreference=sc.next();
            priv.setdetails(pilotPreference,purpose);
            priv.displayDetails();
        }
    }
}

Main.java:70:错误:对super的调用必须是构造函数中的第一条语句pub.super()。setdetails(aircraftName,source,destination);^Main.java:70:错误:无法取消引用voidpub.super()。setdetails(aircraftName,source,destination);^Main.java:77:错误:对super的调用必须是构造函数中的第一条语句priv.super()。setdetails(aircraftName,source,destination);^Main.java:77:错误:无法取消引用voidpriv.super()。setdetails(aircraftName,source,destination);

我必须利用继承并为从主要飞机类别派生的公共和私人飞机设定2类,并打印用户输入的详细信息,但是我无法用我的方法打印一半的详细信息。我想知道我将如何修改此代码。

java oop core
1个回答
-1
投票

super.displayDetails(),不是super().displayDetails() source并且您只能作为该方法中的第一个调用来调用super方法。

© www.soinside.com 2019 - 2024. All rights reserved.