0

基本クラスと派生クラスがあります。私が書いているコードは

class Base {
    ...
}

class derived extends base {
}

class Main {
    public static void main(String[] args){
        derived d = (derived) new Base(); //throws a ClassCastException 
    }
}

これはどのように処理されますか?スーパーキーワードを使わずに基本クラスのメソッドを呼び出したい。

4

4 に答える 4

1

基本クラスはスーパークラスで、派生クラスはサブクラスです。サブクラスの参照でスーパークラスのオブジェクトをキャッチすることはできません。

Base b = new Derived();

上記の指示は機能しますが、

しかし、以下はうまくいきません。

Derived d = new Base();
于 2013-03-07T11:23:48.440 に答える
0

Javaではダウンキャストはできません。基本クラスが派生クラスの参照を格納する場合にのみ可能です

Base b = new Derived()

// Check is required. It may lead to ClassCastException otherwise
if (b instancof D)     
    Derived d = (Derived) b;  
于 2013-03-07T12:20:57.453 に答える
0

スーパーを使用せずに、スーパークラスのメソッドを呼び出すことができます。

ベース:

public class Base {

    public void print() {
        System.out.println("Base");
    }

}

派生:

public class Derived extends Base {...}

主要:

public static void main(String[] args) {
    Derived d = new Derived();
    d.print();
}

プリントアウト:

Base

于 2013-03-07T11:39:49.940 に答える
0

実際には「ベース」は「派生」ではないため、キャストはできません。

次の場合は可能でした

ベース b = new Derived() 派生 d = (派生)b;

于 2013-03-07T11:46:09.417 に答える