亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

寫了幾天了,這個錯誤解決不了,求解

為什么我寫到main的時候,在創建數值時一直報The constructor PassengerCar(int, String, String, String) is undefined這個錯,哪個大神幫你解答一下


package com.imooc;
父類
public class car {
?? ?private int number;//車輛編號
?? ?private String name;//車輛名稱
?? ?private float price;//車輛租金
?? ?public int getNumber() {
?? ??? ?return number;
?? ?}
?? ?public void setNumber(int number) {
?? ??? ?this.number = number;
?? ?}
?? ?public String getName() {
?? ??? ?return name;
?? ?}
?? ?public void setName(String name) {
?? ??? ?this.name = name;
?? ?}
?? ?
?? ?public float getPrice() {
?? ??? ?return price;
?? ?}
?? ?public void setPrice(float price) {
?? ??? ?this.price = price;
?? ?}
?? ?@Override
?? ?public String toString() {
?? ??? ?return? "序號:" +number+"\t"+"名稱:"+name+"\t"+"價格:"+price+"\t";
?? ?}
?? ?
}



子類? 載客量

package com.imooc;

public class PassengerCar extends car {
?? ?private int passenger;
?? ?
?? ?public int getPassenger() {
?? ??? ?return passenger;
?? ?}

?? ?public void setPassenger(int passenger) {
?? ??? ?this.passenger = passenger;
?? ?}

?? ?public PassengerCar(int newNumber,String newName,float newPrice,int passenger) {
?? ??? ?super.setNumber(newNumber);
?? ??? ?super.setName(newName);
?? ??? ?super.setPrice(newPrice);
?? ??? ?this.setPassenger(passenger);
?? ?}

?? ?@Override
?? ?public String toString() {
?? ??? ?return super.toString()+"載客量:"+passenger;
?? ?}?? ?
}

子類 載貨量

package com.imooc;

public class TruckCar extends car {
?? ?private double capacity;


?? ?public double getCapacity() {
?? ??? ?return capacity;
?? ?}

?? ?public void setCapacity(double capacity) {
?? ??? ?this.capacity = capacity;
?? ?}

?? ?public TruckCar(int newNumber,String newName,float newPrice,double capacity) {
?? ??? ?super.setName(newName);
?? ??? ?super.setNumber(newNumber);
?? ??? ?super.setPrice(newPrice);
?? ??? ?this.setCapacity(capacity);
?? ?}

?? ?@Override
?? ?public String toString() {
?? ??? ?return super.toString()+"載貨量:"+capacity;
?? ?}
?? ?
}


子類? 皮卡

package com.imooc;

public class PickCar extends car {
?? ?private int passenger;
?? ?private double capacity;
?? ?
?? ?public int getPassenger() {
?? ??? ?return passenger;
?? ?}
?? ?public void setPassenger(int passenger) {
?? ??? ?this.passenger = passenger;
?? ?}

?? ?public double getCapacity() {
?? ??? ?return capacity;
?? ?}
?? ?public void setCapacity(double capacity) {
?? ??? ?this.capacity = capacity;
?? ?}
?? ?public PickCar(int newNumber,String newName,float newPrice,int passenger,double capacity) {
?? ??? ?super.setName(newName);
?? ??? ?super.setNumber(newNumber);
?? ??? ?super.setPrice(newPrice);
?? ??? ?this.setPassenger(passenger);
?? ??? ?this.setCapacity(capacity);
}
?? ?@Override
?? ?public String toString() {
?? ??? ?return super.toString()+"載客量:"+passenger+"\t"+"載貨量:"+capacity;
?? ?}
?? ?
}


main

package com.imooc;
import java.util.Scanner;
public class Initial {

?? ?public static void main(String[] args) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?//創建汽車對象
?? ?car[] cars = new car[5];
?? ?cars[0]= new PassengerCar(1,"奧迪A4","500f","4");
?? ?cars[1]=new TruckCar(2,"松花江","400f","4")
?? ??? ?}
?? ?}


正在回答

4 回答

https://img1.sycdn.imooc.com//5cef89810001892508580460.jpg

https://img1.sycdn.imooc.com//5cef89810001306006250253.jpg

構造器的參數類型是(int,String,float,int),但是你創建的時候確是(int,String,String,String)

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


??? public PassengerCar(int newNumber,String newName,float newPrice,int passenger) {
??????? super.setNumber(newNumber);
??????? super.setName(newName);
??????? super.setPrice(newPrice);
??????? this.setPassenger(passenger);
??? }
這里設計的不是很好
首先super.setNumber(newNumber);這個只是初始化了父類的Number屬性,但又因為你設計的父類的屬性是私有的,私有屬性是不可以被繼承的。所以這個初始化,你的子類只有一個屬性被初始化了,就是passenger,沒有其他屬性了。
還有,創建對象是car類首字母要大寫

建議:
首先將父類公有化
然后

建議是:
首先將父類屬性公有化,這樣子類才繼承有父類那3個屬性
其次private在同一類中是可以訪問的,這里完全可以這樣子寫
public PassengerCar(int newNumber,String newName,float newPrice,int passenger) {
??????? //初始化子類屬性
??????? this.setNumber=newNumber;
??????? this.setName=newName;
??????? this.setPrice=newPrice;
??????? this.setPassenger(passenger);
??? }

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

Georgephy

最后一行沒寫完,也是用=賦值就行
2019-05-29 回復 有任何疑惑可以回復我~

希望樓主無論解決與否給個回復,謝謝~

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

創建汽車對象的時候,對象不應該用數組。

?car[] cars = new car[5]; 實際上創建的實際上是一個car類型的數組

換成 car? cars = new car();

cars.PassengerCar(1,"奧迪A4","500f","4");

?cars.TruckCar(2,"松花江","400f","4");

樓主這樣試一下,應該可以

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

慕虎8372082 提問者

后面發現我數組后面的不需要用雙引號
2019-05-29 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

寫了幾天了,這個錯誤解決不了,求解

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號