質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

802閲覧

メソッドのオーバーライド

Casablanca_mtg

総合スコア209

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2018/08/09 02:03

編集2018/08/09 04:48

お世話になります
今、kotlinの勉強をしております
try kotlinでコンパイルをしてコンソールに表示して確認しながら学習しております
下記の記述の仕方がわからないのでご指導ください

fun main(args: Array<String>) { val car = Ferrari("赤") car.drive(5.0) car.drive(10.0) } open class Car(val color : String) { var distance = 0.0 open fun drive(d: Double) { distance = distance + d println("${color}の車が ${d}km 走りました。") println("その結果、マイレージは ${distance}キロになりました") } } class Ferrari (color: String) : Car(color) { override fun drive() { distance = distance + d println("${color}のフェラリーが走っています!ブウォオオオーン!") println("おおっ、かっこいい!!!") println("マイレージは ${distance}キロになったぜい!") } }

エラー内容
Error:(17, 4) 'drive' overrides nothing オーバーライドするものがない
Error:(18, 30) Unresolved reference: d 設定ミス⁇
書き方そのものがよく理解できていません(open class出ないと継承ができないのでこのようにしました
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

drive(d: Double)drive()は別物です。
継承の前に、もっと基本的なことを勉強すべきでは?

投稿2018/08/09 02:10

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Casablanca_mtg

2018/08/09 03:41

すみません。書籍で勉強していますが記述のつながりがよく理解できていません。“基本的なことを勉強すべきでは?”その通りだと思いますがやっていることに自信が持てなくてお聞きしました。だったら辞めればいいといわれそうですが・・・・
fuzzball

2018/08/09 03:55 編集

スーパークラスで定義されているのは drive(d: Double) なのですから、オーバーライドしたいなら、サブクラスでも drive(d: Double) と書かなければいけません。 スーパークラスに drive() が存在しないので 'drive' overrides nothing というエラーが出ています。 さらに、drive() だと引数に d が無く、dという変数が定義されていないのに distance = distance + d で d を参照しているので Unresolved reference: d というエラーが出ています。
Casablanca_mtg

2018/08/09 04:48

順序追ってみていかなければいけないですね。ベースがあってそれをカスタマイズするということですね。 書籍に書かれている内容です。 ![![イメージ説明](4728670877b3f70d2f522f55a899694f.jpeg)](a41c0c30902bb9b5491f904d77b70280.jpeg)
Casablanca_mtg

2018/08/09 05:23

理解できました。ありがとうございました。 override fun drive(d: Double)の記載が間違っていました。d: Doubleが記述されていませんでした。修正できました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問