2

私は Java チュートリアルを読んでいましたが、次のように書かれていました。

抽象クラスはインスタンス化できませんが、サブクラス化できます。

これは何を意味するのでしょうか?サブクラスを作成するには、インスタンス化する必要があると思いましたか? この行は私を本当に混乱させました。どんな助けも大歓迎です。

4

3 に答える 3

4

インスタンス化:

AbstractClass a = new AbstractClass(); //illegal

サブクラス:

class ConcreteClass extends AbstractClass { ... }
ConcreteClass c = new ConcreteClass(); //legal

抽象クラスを拡張する新しいクラスを作成し、すべての抽象メソッドを実装してから、その新しいクラス使用する必要があります。

これも実行できることに注意してください。

class ConcreteClass extends AbstractClass { ... }
AbstractClass a = new ConcreteClass(); //legal
于 2012-11-16T00:24:19.997 に答える
1

サブクラスは、その親クラスが持つすべてのプロパティ/メソッドを取得できますが、インスタンス化されたクラスは、その親クラスのインスタンスをメモリ内に作成するときです。

于 2012-11-16T01:06:14.817 に答える
0

インスタンス化されたということは、クラスのオブジェクトを作成したいということです。サブクラスは継承子です。例えば、

abstract class A{
  //Class A is abstract hence, can not be instantiated. The reason being abstract class provides the layout of how the concrete sub-class should behave. 

   pubic abstract void doSomething();
   //This abstract method doSomething is required to be implemented via all the sub-classes. The sub-class B and C implement this method as required.

}

class B extends A{
   //Class B is subclass of A
  public void doSomething(){ System.out.println("I am class B"); }
}
class C extends A{
   //Class C is subclass of A
  public void doSomething(){ System.out.println("I am class C"); }
}

if you try to do this, it would generate an exception

A a = new A();

But this would work fine.
B b = new B();
or 
A a = new B(); //Note you are not instantiating A, here class A variable is referencing the instance of class B 
于 2012-11-16T00:26:58.640 に答える