2016-08-06 13 views
-1

私は完全にjavaに慣れていて、簡単なコマンドラインアプリケーションを作成しようとしましたが、間違ったことをしています。ここに私のコードスーパークラスからプロパティを拡張する方法

public class Auto1 { 
    private String make; 
    private String model; 
    private int value; 
    private int soldPrice; 
    private int year; 
    private int hp; 


    public Auto1(String make, String model, int value, int soldPrice, int year, int hp) { 
     this.make = make; 
     this.model = model; 
     this.value = value; 
     this.soldPrice= soldPrice; 
     this.year = year; 
     this.hp = hp; 
    } 

    public void setMake(String a) { 
     make = a; 
    } 
    public void setModel(String b) { 
     model = b; 
    } 
    public void setvalue(int c) { 
     value = c; 
    } 
    public void setSoldPrice(int d) { 
     soldPrice = d; 
    } 
    public void setYear(int e) { 
     year = e; 
    } 
    public void setHp(int f) { 
     hp = f; 
    } 
    public String getMake() { 
     return make; 
    } 
    public String getModel() { 
     return model; 
    } 
    public int getValue() { 
     return value; 
    } 
    public int getSoldPrice() { 
     return soldPrice; 
    } 
    public int getYear() { 
     return year; 
    } 
    public void price() { 
     int price = value - soldPrice; 
     if(a >=5000) { 
      System.out.println("You Overpaid"); 
     } else { 
      System.out.println("Fair Price"); 
     } 
    } 
} 

だと私は「public」はタイプの違法開始が明らかであるので、私はそれが私を許可していませんが、このコード

public class Auto extends Auto1{ 
    Auto1 auto; 
    public auto = ("Audi","R8",162900,200000,2017,610){} 
} 

を作成しているサブクラスを作成しようとしています私はオブジェクトを作成する方法が他には分かりません。申し訳ありませんが、これは誰にも馬鹿に聞こえますが、私はJavaにとって非常に新しいです。

+1

これは有効なJavaではありません。あなたは、is-aやhas-a relationshipのために行くのですか?あなたの目標は何ですか? – Li357

+0

私は本当にそれらが何であるかわからない...私は本当に新しいです – Kushtrim

答えて

1

お客様の回線public auto = ("Audi","R8",162900,200000,2017,610){}は有効なJava構文ではありません。これをあなたのコンストラクタに入れることを意味しましたか?あなたのクラスAutoAuto1よりも具体的なバージョン、つまり特定の種類のAuto1を参照しているようです。

public Auto() 
{ 
    super("Audi","R8",162900,200000,2017,610); 
} 
+0

これをクリアするために多くありがとう。もう一つの問題tho ...私はこのアプリケーションを初期化する方法。メインクラスでは何を書く必要がありますか? – Kushtrim

+1

新しいクラスを作成するには、 'Auto a = new Auto();'を呼び出し、オブジェクト – Li357

+0

で何かを行います。このクラスの与えられた値でアプリケーションを初期化する方法 – Kushtrim

1

質問に対する回答はありますが、あなたがしようとしていることは、必ずしも最良のOOデザインとは言えません。 それを見て、あなたのAuto1は(理論的に)より具体的であるように、あなたのAutoクラスを(つまり、他の方法で)拡張する必要があります。この場合、あなたが何をしているかによって、Autoを抽象クラスにすることができます。あなたのAuto1が車輪とエンジンを備えた「本当の」車のようなもので、Auto1がちょっとしたモデル情報なのであれば、Auto1を拡張するのではなく、AutoクラスのAuto1型の変数を持つ方が良いでしょう。この場合、理論的には、車(オートタイプのオブジェクト)が作成されると、makeやyearのようなプロパティを変更すべきではありません。

関連する問題