"0"、 "brown"、 ".5m"、または "50cm"の文字列入力があるとします。dog
クラスのdogインスタンスを作成します。これはpet
クラスの子です。しかし、pet
クラスは、horse
、pig
、bird
のスーパークラスです。サブクラス間の変数を比較して作成する方法を教えてください。 Java
public class Pet {
public final String[] attribs;
public void sound() {
System.out.print(attribs[4]);
}
}
public class Dog extends pet {
public final String[] attribs = {"0","brown",".5m","50cm","wow"};
}
public class Bird extends pet {
public final String[] attribs = {"1","green",".3m","30cm","hola"};
}
public class Pig extends pet {
public final String[] attribs = {"2","pink",".7m","75cm","oing"};
}
public class Horse extends pet {
public final String[] attribs = {"3","black","1.5m","150cm","burf"};
}
public class app {
public static void main(String[] arg) {
Scanner inputs = new Scanner(System.in);
String AttribInserted;
Pet FindedPet;
System.out.println("type an attribute of your pet")
AttribInserted = inputs.nextLine();
for(int i = 0; i < 4;i++)
if (l.equals(dog.atbts[i])) FindedPet = new dog();
for(int i = 0; i < 4;i++)
if (l.equals(bird.atbts[i])) FindedPet = new bird();
for(int i = 0; i < 4;i++)
if (l.equals(horse.atbts[i])) FindedPet = new horse();
for(int i = 0; i < 4;i++)
if (l.equals(pig.atbts[i])) FindedPet = new pig();
System.out.print("Your pet says:");
FindedPet.sound();
}
}
私はペットの複数のサブクラスを追加し、私は皆のための属性を追加する場合まあ、すべてのサブクラスのすべての変数の間で比較する方法があります?。例: l.equals(subclass.atbts[i])
もっと複雑なプロジェクトを使用したい場合は、ほとんどの場合です。 subclass.atbts[i][j][k]
:あなたのメインロジック(私はそれ
WordRepository
のような別のクラスになるだろうが)でJava命名規則'l'はドキュメンテーションが特に使用することを警告する識別子です。型名は大文字で始まる必要があります。 'dog.atbts'などがコンパイルされないことに気がつきましたか?また、 'if'とループ本体の中に中括弧(' {'、'} ')を置くことはまったく無視されています。 –
@LewBloch * 'l'はドキュメンテーションが特に警告する識別子です。*ソースはありますか? – shmosel
私ははしごに慣れていますが、慣習のない言葉で始まり、私はコースを取らないので、私は必要なところから読んでいます。Javaの命名規則はわかりません。また、この質問は私のプロジェクトの引用ではなく、わかりやすく、より有用になるのは粗い一般的な例です。私は決してこのコードを使用していない、私はそれをコンパイルしていない。 –