問題タブ [upcasting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - フォームから取得した後のクラス参照のアップキャスト
上手、
2つのモデルクラスがあるとしましょう。
そして、モデルとしてBaseClassタイプを持つビュー。
DerivatedClassをビューに渡し、フォームを介して情報を取得すると、DerivatedClassに再び「キャスト可能」になりませんか?
問題は、ビュー内でモデルのタイプ(Model.GetType()。FullName)を取得すると、(驚くことなく)DerivatedClassタイプを取得することです。
しかし、投稿されたモデルを確認すると、コントローラー内でBaseClassが取得されます(もちろん、キャストできません!)
コントローラ:
意見:
私の論理は間違っていますか?POST情報を取得した後、コントローラー内でこのキャストを行う方法はありますか?
java - インターフェイスで定義されていない実装で宣言されたメソッドを使用する
インターフェイスによって定義されたクラスがあります
anotherMethod を呼び出すにはどうすればよいですか?
実装でいくつかのメソッドを定義できるようにしたいのは、私の製品コードでは、Test インターフェースが非常に幅広いクラスをカバーし、複数のクラスによって実装されているためです。実装で定義されたメソッドを使用して、単体テストの DI フレームワークでカバーされていない依存関係を設定するため、メソッドは実装ごとに変化します。
java - Javaでのアップキャストと2つの別個のオブジェクトプロパティ
Javaでのアップキャストを理解しようとしています。最近観察された奇妙な行動。
例:
そのアップキャストされたオブジェクトには、2つの別個の「i」プロパティがあるようです。1つの「i」は直接アクセス可能(ai)で、もう1つは子クラスのメソッド(a.printI())を介してアクセスできます。
アップキャストされたオブジェクトはスーパークラスからプロパティを取得し、子クラスからメソッドを取得するように見えます。
オブジェクトはどのようにして2つの別々の「i」を持つことができますか?!
c++ - C スタイルのキャストでプライベート基本クラスに変換できるのはなぜですか?
このコードがあるとしましょう
static_cast
main 関数の C スタイル キャストは、C++ キャスト ( 、dynamic_cast
、 )では正しく表現できませんreinterpret_cast
。しかし、そもそもこれを許可する理由は何ですか?カプセル化に害はありませんか?
更新 この質問はC++での設計上の決定に関するものであるため、これはリンクされた質問の複製ではありません。その言語で何ができるか、何ができないかではなく、特定の決定が下された理由を尋ねます。
c++ - 変換とアップキャスト
変換を完全に理解したい、つまり、関数呼び出しがいつ暗黙の変換を引き起こし、いつコンパイルエラーを引き起こすのかを確実に知りたいです。次のリスト(優先度順)から最大2つのステップで変数を変換する唯一の方法がある場合にのみ、変換が行われる可能性があることを学びました。
どこで、私がそれを理解した方法(あなたは私を修正するかもしれません)は、プロモーションはプリミティブをより大きなプリミティブ型に変換することです。変換とは、int から char への変換など、昇格ではないプリミティブ間の変換です。また、ユーザー定義の変換は、変換コンストラクターと変換演算子を使用したクラスの変換です。これで、継承と Is-A 関係、つまり派生クラスが基本クラスであることもわかりました。したがって、基本クラスへの参照を期待する関数に派生クラスを送信するとうまくいくはずです。上記の 2 つの概念を組み合わせると、私が書いた次の例が機能するはずです。
D は int から変換できるため、D は C です。ただし、このコードはコンパイルされていません。何故ですか?矛盾はどのように解決できますか?この問題について少し光を当てることができますか?ありがとう!
c++ - スーパークラスまたはインターフェースへのアップキャスト?
私はすでに実際に働いている何かの背後にある理論を確認しようとしています. 機能がさまざまな dll に分割されているため、完全なセットアップはややゆがんでいますが、状況を説明します。
このアップキャストは機能しますが、DerivedClass の定義へのフル アクセスが必要です。
ただし、以下は機能しません。
この問題を回避するために、インターフェイスを実装しました。
そして今、次のコードは機能します:
完全に仮想化されたクラスへのキャストは特殊なケースであると誰かが私に言った記憶があいまいですが、その理由を思い出せず、ウェブ上でそれについて何かを見つけることもできません。
助けてください - なぜ私のコードは機能するのですか?!
objective-c - NSAssert1 の引数の型が正しくありません
これはエラーではありませんが、取り除きたい警告がいくつかあります。
私が得ている警告は次のとおりFormat specifies type 'long' but the argument has type 'OSErr' (aka 'short')
です。明らかに、long
の代わりに使用してこれを変更できますOSErr
が、なぜエラーが発生するのか疑問に思っていました。これはアップキャストなので、問題は起こらないはずだと思いました。
誰でも説明できますか?
java - instanceofのチェック中に混乱を招く
質問: 両方のケースで出力が true になるのはなぜですか?
c# - C#:アップキャスト後もスーパークラスにはサブクラス情報があります
私には2つのタイプがあります:BaseQuestion
とQuestion
。Question
からいくつかのプロパティを継承しますBaseQuestion
。これで、WebAPIを作成してBaseQuestion
利用できるようになりました。データ型には、Question
利用可能にしたくない追加のプロパティがあります。を取得するメソッドがQuestion
あり、最初の計画は暗黙的にそれをにアップキャストすることでしたBaseQuestion
。アクセス可能にしたくない余分なプロパティはすべて失われ、返却できると思いました。まあ、そうではありません。これが私がすることです:
bqのタイプはまだ「質問」です。BaseQuestionプロパティにアクセスできませんが、デバッガーでそれらを確認でき、クライアントに送信するJSON出力にあります。
bqをタイプBaseQuestion
にし、サブクラスで定義されているプロパティを持たないようにする方法についてのアイデアはありますか?