java-7.1抽象類と抽象的な方法を初めから認識する。
2714 ワード
この章では、抽象類と抽象的な方法について話しましょう。
1.抽象類と抽象的な方法は何ですか?
種類と方法の前にabstractを加えると、この類または方法は抽象類です。
抽象クラス:
(1)抽象類は全部抽象的な方法ではなく、ある方法も実現できる。
(2)抽象的な方法を持っているのは必然的に抽象的なものである
(3)具体化できない
抽象的な方法:
(1)実現されていないabstract表示を使用する方法
(2)抽象類を継承するサブクラスは、抽象的な方法を実現しなければならない。
3.実例的な対比
次に、抽象類と普通類の違いを比較する二つの例を示します。
この状況に基づいて、私達は抽象的な種類を使って抽象的なinstrumentとプレーすればいいです。このようにして実現する時間を省くことができ、またこの継承と今後の話をするインターフェースによって多状態を実現することもできます。
また、コードの上から見られます。Instrumentはnewではいけません。
まとめ:この章では、抽象類と抽象的な方法について簡単に議論しました。
この章はここまでです。ありがとうございます。
----------------------------
目次
1.抽象類と抽象的な方法は何ですか?
種類と方法の前にabstractを加えると、この類または方法は抽象類です。
package com.ray.ch07;
public class Test {
}
abstract class Instument {
public abstract void Play();
}
2.抽象類と抽象的な方法の特性抽象クラス:
(1)抽象類は全部抽象的な方法ではなく、ある方法も実現できる。
(2)抽象的な方法を持っているのは必然的に抽象的なものである
(3)具体化できない
抽象的な方法:
(1)実現されていないabstract表示を使用する方法
(2)抽象類を継承するサブクラスは、抽象的な方法を実現しなければならない。
3.実例的な対比
次に、抽象類と普通類の違いを比較する二つの例を示します。
package com.ray.ch07;
public class Test {
public void tune(Instrument instrument) {
instrument.Play();
}
public void tune(Instrument[] instruments) {
for (int i = 0; i < instruments.length; i++) {
tune(instruments[i]);
}
}
public static void main(String[] args) {
Test test = new Test();
Instrument instrument = new Instrument();
Wind wind = new Wind();
Bass bass = new Bass();
Instrument[] instruments = { instrument, wind, bass };
test.tune(instruments);
}
}
class Instrument {
public void Play() {
System.out.println("instrument play");
}
}
class Wind extends Instrument {
@Override
public void Play() {
System.out.println("wind play");
}
}
class Bass extends Instrument {
@Override
public void Play() {
System.out.println("bass play");
}
}
上の例は抽象類を使っていません。この中でnew Instruumentはできますが、問題が発生します。ほとんどのコードの時間の中で、Instrumentという種類はnewではなくて、instrumentの中のプレイは普通呼び出さなくてもいいです。ですから、この方法はあるだけでいいです。工夫して実現する必要はありません。上のnewは、私が例を作って見せただけです。この状況に基づいて、私達は抽象的な種類を使って抽象的なinstrumentとプレーすればいいです。このようにして実現する時間を省くことができ、またこの継承と今後の話をするインターフェースによって多状態を実現することもできます。
package com.ray.ch07;
public class Test {
public void tune(Instrument instrument) {
instrument.Play();
}
public void tune(Instrument[] instruments) {
for (int i = 0; i < instruments.length; i++) {
tune(instruments[i]);
}
}
public static void main(String[] args) {
Test test = new Test();
// Instrument instrument = new Instrument();//error
Wind wind = new Wind();
Bass bass = new Bass();
Instrument[] instruments = { wind, bass };
test.tune(instruments);
}
}
abstract class Instrument {
public abstract void Play();
}
class Wind extends Instrument {
@Override
public void Play() {
System.out.println("wind play");
}
}
class Bass extends Instrument {
@Override
public void Play() {
System.out.println("bass play");
}
}
ほとんどの状況は上に展示されているように、Instrumentは抽象的なクラスとしてだけで、プレイという方法も抽象的に出てきて、サブクラスは必ずそれを実現して、直接にInstrumentを使ってこれらのサブクラスを指すことができます。また、コードの上から見られます。Instrumentはnewではいけません。
まとめ:この章では、抽象類と抽象的な方法について簡単に議論しました。
この章はここまでです。ありがとうございます。
----------------------------
目次