2つのクラス、1つの抽象的親クラスLot.java、およびテストクラスTestLots.javaを割り当てられました。私はこれらのいずれかを編集するつもりはない。割り当ては、TestLotのエラーがもはやエラーではなくなるように、Lotの2つのサブクラスを作成することです。 互換性のないタイプ:LotType1はロットに変換することはできません、私はエラーを取得しかしカスタムクラス:カスタムタイプを他のカスタムタイプに変換することはできません
Lot ID L3 has area: 13500.0
Lot ID L2 has area: 27000.0
Lot ID L1 has area: 35000.0
Lot ID L4 has area: 70000.0
:
プログラムの目的は、の順に多くの名前と領域を表示することであるが、このようなものです LotType2はLotに変換できません。私は問題が私のサブクラスにあり、それが親クラスをオーバーライドまたは参照するはずであると思われます。ここで
は、私はエラーを取得するTestLots、次のとおりです。ここで
public class TestLots {
public static void main(String args[]){
// an array of lots -- some of type1, some of type2
Lot[] lots = {new LotType1("L1",350, 200), // error here
new LotType2("L2",100,270),
new LotType1("L3",100, 270),
new LotType2("L4",350,200)
};
// sort the lots of mixed types by area (note, you'll have to implement
// Comparable interface correctly in LotType1 and LotType2 for this to work:
java.util.Arrays.sort(lots);
// print out sorted results
for (Lot lot: lots) {
System.out.print(lot + " ");
System.out.println();
}
}
}
public abstract class Lot {
public abstract double calculateArea();
public abstract String getID();
@Override
public String toString() {
return "Lot ID "+ getID() +" has area: "+ calculateArea();
}
}
ロット、親クラスのサブクラスは、ほぼ同じですされています
public class LotType1 extends Lot implements Comparable<LotType1>{
String name;
int height;
int width;
double area;
public LotType1(String name, int height, int width) {
this.name = name;
this.height = height;
this.width = width;
}
public String getID() {
return name;
}
public double calculateArea() {
return area = ((width * height)/2);
}
@Override
public int compareTo(LotType1 lot) {
area = ((width * height)/2);
if(area==lot.area)
{
return 0;
}
else if(area>lot.area)
{
return 1;
}
else
{
return -1;
}
}
}
を編集しますLotType2を追加:
public class LotType2 extends Lot implements Comparable<LotType2>{
String name;
int height;
int width;
double area;
public LotType2(String name, int height, int width) {
this.name = name;
this.height = height;
this.width = width;
}
public String getID() {
return name;
}
public double calculateArea() {
return area = (width * height);
}
@Override
public int compareTo(LotType2 lot) {
area = (width * height);
if(area==lot.area)
{
return 0;
}
else if(area>lot.area)
{
return 1;
}
else
{
return -1;
}
}
}
申し訳ありませんが、この投稿はとても長いです。私は、関連するすべてのファイルを含めることにしました。
また、LotType2クラスを追加します。 は、配列定義でLotType2をコメントしています。そのうまく動作します。 – Zenith
クラスは「ほぼ同じ」かもしれませんが、明らかに十分に同一ではありません。私は名前を除いて 'LotType1'と同じ' LotType2'を作ろうとしました。それをコンパイルします。だから明らかに、あなたがそれを投稿する必要があることを意味するエラーを引き起こしている 'LotType2'については何か違うのです。 – ajb
こんにちは@Preshus HB、ようこそ。回答が問題の解決に役立った場合は、回答の横にあるチェックマークをクリックして「受け入れ済み」とマークしてください。 。 – Jeff