2017-09-22 19 views
0

"Dog"というクラスを使用していて、 "Animal"というクラスを継承している場合は、コンストラクタにAnimalオブジェクトを受け取るパラメータを使用させる方法があります。 Animalオブジェクトに必要な情報を格納するスーパーキーワード?ありがとう。Java継承/コンストラクタ

答えて

0

いいえ、オリジナルのコピーを作成したいとします。Animal。これはDogAnimalであるため、別のAnimalを渡して新しいオブジェクトの「親」にすることができないためです。

これを行う方法は、同じ種類のオブジェクトを取り込む親クラス(Animal)にコピーコンストラクタを作成することです。

public Animal(Animal other) { 
    this.field1 = other.field1; 
    this.field2 = other.field2; 
    ... 
} 

次に、あなたのDogクラスでは、あなたが行うことができます自動的に

public Dog(Dog other) { 
    super(other); 
    this.breed = other.breed; 
    ... 
} 
+0

ありがとうございました! – Cresyls

+0

喜んで私は手伝った!これが答えであれば、それを自由に記入してください:) – ACVM

0

ない、ありません。今Animal自体

Animalインスタンスを取ります(ユーザが作成した)「コピーコンストラクタ」スタイルのコンストラクタを有していてもよく、それをコピーフィールドから、あなたはあなたが欲しいものを行うには、このコンストラクタにAnimalオブジェクトを渡すことができます。

0

私は "犬" と呼ばれるクラスを使用していた場合は、

class Dog { 
} 

、それは

class Animal { 
} 
class Dog extends Animal { 
} 

がある "アニマル" と呼ばれるクラスを拡張しますコンストラクタを持つ方法

class Dog extends Animal { 
    Dog() { 
    } 
} 

動物オブジェクト

class Dog extends Animal { 
    Dog(Animal otherAnimal) { 
    } 
} 

を取り、その後、superキーワード

を使用しないように私を必要とするパラメータを使用↑↑↑↑でのsuperキーワードの使用はありません上記コード↑↑↑↑

Animalオブジェクトに必要な情報を格納するには?

class Dog extends Animal { 
    Animal otherAnimal; 
    Dog(Animal otherAnimal) { 
     this.otherAnimal = otherAnimal; 
    } 
} 

保存された情報、およびsuperキーワードのさらに役に立ちません。

+0

私は何を意味するのではなく、投稿に感謝します。 – Cresyls

+1

@クレシルあなたの質問に完全に答えました。 – Oleg

+0

@Oleg私はそれを正しく説明しないと自分の責任であることを知っています。それは技術的に私の質問に答えるかもしれませんが、それは同時にありません – Cresyls