問題タブ [subtyping]
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.
java - What are some hardfast "rules" for casting with subtypes?
I was attempting some practice exams for my Java final coming up and I came across this question.
Consider the following class definitions and indicate whether 'Test.main()' would compile successfully. If it does compile, indicate whether it would run successfully or if not, indicate what Exception would be thrown.
I thought that Test.main() would compile but throw a runtime exception due to the fact that a is of actual type C and we are trying to cast it to type B. This is not the case as the answers say this is fine.
I'm pretty confused about the rules of casting where there is a hierarchy deeper than 2 levels involved. The lecture slides don't really have this kind of information!
So what are some hardfast "rules" to keep in mind if this type of question pops up on the exam?
javascript - 構造的サブタイピングに関連するフローの情報損失は、この種のポリモーフィズムに固有のものですか?
フローの構造的サブタイプは、情報の損失につながる可能性があります。
(このコードは目に見える変更を実行するため、ひどいものです。説明のみを目的としています。)
行ポリモーフィズムは、型の安全性を損なうことなくこの情報の損失を回避するための概念であると読みました。
サブタイプ多型で同じことを達成する方法はありますか?
[編集]
より多くの聴衆に向けて、少し怖い用語について簡単に説明します。
- Polymorpishmは、2 つの型が等しいかどうかを判断するための派手な言葉です。つまり、厳密な型システムをより柔軟にします。
- パラメトリック ポリモーフィズム(フロー内のジェネリック) では、型はまったく問題にならないため、2 つの型は常に同等であると述べています。
- サブタイプ ポリモーフィズム(フロー内のサブタイプ) では、2 つのタイプから階層を導き出すことができる場合、つまりサブタイプをそのスーパータイプの下に含めることができる場合、2 つのタイプは同等であると述べられています。
- 行ポリモーフィズムはサブタイプに似ていますが、情報損失の問題を解決します (ただし、技術的には、サブタイプの関係はもうないため、サブタイプの形式ではありません)。
- 有界ポリモーフィズムは、2 つの型が特定の目的 (例えば、等価性、順序、マッピングオーバーなど) でのみ同等であると述べています。