abstractとしたクラス側のメソッドで、サブクラスの情報を使用したいです。
例
abstractクラス
kotlin
1abstract class User { 2 abstract val clazz: Class<out User> 3 4 fun shout(): String { 5 return clazz.simpleName 6 } 7}
サブクラス
kotlin
1class Taira() : User() { 2 override val clazz: Class<out User> = Taira::class.java 3}
kotlin
1class Akira: User() { 2 override val clazz: Class<out User> = Akira::class.java 3}
やりたいこと
スーパークラス側では、サブクラスのクラス名を返すメソッドを実装しようとしています。
そのためにabstractなプロパティとしてサブクラスのクラスオブジェクトを保持するように実装しています。
でもスーパークラスがサブクラスの情報が欲しいときにわざわざサブクラスに実装を強制させる必要があるのかと疑問に思っています。
ほかに実装の方法はありますでしょうか。よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/09/14 11:23
2020/09/14 13:24