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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

1223閲覧

override例題のエラーが解決できない

2r4h8k3m

総合スコア22

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2021/04/09 03:32

編集2021/04/09 06:30

Override理解深めたく次の例題をコピペして実行したのですが、ソースにエラーがあり修正してそれでも分からない箇所があり質問いたしました。
overrride例題
https://techacademy.jp/magazine/34029

Lion.Java 29、35、37行目で

Lion.java:35:エラー: nameはAnimalでprivateアクセスされます System.out.print In(" a"+ name + "TŤ, "); です Lion.java:37: エラー: ageはAnimalでprivateアクセスされます System.out.print In( "EAI"+ age + "TŤ, "); です エラー3個 :¥Users¥java¥0verride>javac Lion. java Lion.java:29: エラー: シンボルを見つけられません @override シンボル: クラス override 場所:クラスLion Lion.java:35: エラー: name(はAnimalでprivateアクセスされます System.out.print In(" a"+name+ "T. "); Lion.java:37: エラー: ageはAnimalでprivateアクセスされます System.out.print In( "E "tage+"TF. "); ラー3個 ¥Users¥¥java¥0verride>

などのエラーが出ます。Animalクラスでprivateで2つの変数設定しているのは分かるのですが、これをpublicなどに変換しても良いのでしょうか。回答余裕ある方よければよろしくお願いします。

ちなみに作成し改変したファイルですが、

Animal.Java

//動物クラス class Animal { private String name; private int age; public Animal() { name = ""; age = 0; System.out.println("動物オブジェクトを作成。"); } public void setAnimal(String s, int n) { name = s; age = n; System.out.println("名前を" + name + "、年齢を" + age + "に設定しました。"); } public void introduce() { System.out.println("名前は" + name + "です。"); System.out.println( "年齢は" + age + "です。"); } }

Lion.Java

//ライオンクラス class Lion extends Animal { private double speed; public Lion() { speed = 0.0; System.out.println("ライオンオブジェクトを作成。"); } public void setSpeed(double sp) { speed = sp; System.out.println("スピードを" + speed + "km/hに設定しました。"); } @override public void introduce() { System.out.println("名前は"+name+ "です。"); System.out.println( "年齢は"+age+"です。"); System.out.println("スピードは"+ speed + "km/hです。"); } }

Test.Java

class Test { public static void main(String[] args) { Lion lion1 = new Lion(); lion1.setAnimal("king", 12); lion1.setSpeed(100.5); lion1.introduce(); } }

です。

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

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

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

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

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

maisumakun

2021/04/09 03:48

書いたソースコードはどのようなものでしょうか?
K_3578

2021/04/09 03:51

質問者さんが書いたソースコードをMarkDownの<code>ブロックで囲んでご提示ください。
K_3578

2021/04/09 06:32

techacademyは中々にやらかし前例あるので、個人的には全くお勧めしたくないです。
2r4h8k3m

2021/04/09 06:41

せっかく作ったのだからコンパイル通してoverrride使った例としてどんな動きをしているのか理解をしたかったのですが...ご意見ありがとうございます
K_3578

2021/04/09 06:45

いや、別にいますぐ辞めろと言ってる訳じゃないですよ? ただ、誤った情報を平然と載せていてプログラミングスクールを名乗っている所の記事を 参考に勉強すると誤った知識を身につけそうなので、ドキュメントとかで裏を取る方が良いんじゃないかなと
guest

回答1

0

ベストアンサー

とりあえず動かすならこんな感じでしょうか?
(間違い等ありましたらご指摘いただけますと幸いです)

java

1Lion.java 2~省略~ 3 @Override 4 public introduce() { 5 super.introduce(); 6 System.out.println("スピードは"+speed+"km/hです。"); 7 }

投稿2021/04/09 07:30

編集2021/04/09 07:38
omusibi_kororin

総合スコア14

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

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

momon-ga

2021/04/09 07:45 編集

private String name; private int age; が、privateのままだとコンパイルできないというのが元の質問の内容です。 なので、可視性も変更する必要があります。 おっと・・・変数を削除するという修正なのですね。
omusibi_kororin

2021/04/09 11:22

> privateのままだと~ 質問文でprivateの変更をしてもよいのかとあるので、 私のは回答として正しくないですね……
2r4h8k3m

2021/04/11 03:48

ご回答ありがとうございました。結局privateはよく分からなかったのですが、overrideは読んで掴むことができたので、ご意見もらって一歩進めました。
dodox86

2021/04/11 05:45

> 結局privateはよく分からなかったのですが まぁ、最も簡潔な修正としてはprivateのフィールドを継承したクラスでも使うこと前提でprotectedにする、でしょうね。 publicでフィールドを露出するのは問題外なので、publicにするならpublic String getName()とかのアクセサーを用意するか。 いずれにせよ元の記事がアレレで困ったことです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問