2016-07-30 16 views
0

Javaでは、「Card」というクラスがあります。このクラスはgetAction()メソッドを持ち、Actionクラスのオブジェクトを返します。Swift:初期化時の関数のオーバーライド(Javaの例を参照)

init中にこのメソッドをオーバーライドすることは可能です。このように:

Card card = new Card() { 
    @Override 
    public Action getCard() { 
     return Action... 
    } 
} 

私はSwift言語でこれを行うことができますか、メソッドの異なるオーバーライドごとにクラスを作成するだけでいいですか?

答えて

0

anonymous inner classと呼ばれている - あなたが実際に1回派生クラスをインラインで宣言しています。

残念ながらスウィフトにはこの機能がありません。

でも、クロージャをインスタンスに渡すことを検討できます。

Class Card { 
    var getCardFunction :() -> Int 
} 

は今、あなたは初期化した後、あなたが望む機能を渡すことができます:

var card = Card() 
card.getCardFunction = { 
    return 6 
} 

は、あなたのカードのクラスはVAR getCardFunctionを持っていると言うことができますあなたも持つことができますgetCardFunction関数のデフォルト値:

Class Card { 
    var getCardFunction :() -> Int = { 
    return 3 
    } 
} 
0

Swiftではこれを行うことはできません。クラスを作成する必要があります。そのクラスから継承し、メソッドをオーバーライドする必要があります。

あなたは、この応答のような代替行うことができます:あなたはJavaで参照している何Swift: Override object method

関連する問題