※ ChatGPTを利用し、要約された質問です(原文:javaのオーバーライドについての質問です。)
Javaのオーバーライドについて:子クラスで親クラスのメソッドを上書きする方法
このQ&Aのポイント
Javaのオーバーライドについての質問です。クラスParent04に受け取ったString配列の中身を全て大文字に変換するChangeメソッドが定義されています。クラスParent04を継承するクラスChild04でChangeメソッドをオーバーライドして、String配列の中身を全て小文字に変換するように変更してください。その後、mainメソッドからChangeメソッドを呼び出して、変換後のString配列の要素を全て出力してください。
現在、コマンドプロンプトでコードをコンパイルしようとしていますが、エラーが表示されます。「'.class'がありません」「;がありません」というエラーです。エラーの意味を調べたり、コードを確認したりしましたが、解決策が見つかりません。戻り値と引数の値は合わせていますが、なぜエラーが発生しているのでしょうか?考え方やヒントを教えてください。
Javaのオーバーライドでは、子クラスで親クラスのメソッドを上書きすることができます。この質問では、クラスParent04に定義されているChangeメソッドを、クラスChild04でオーバーライドしています。オーバーライドするためには、子クラスで親クラスのメソッドと同じシグネチャ(メソッド名、引数の個数と型)を持つメソッドを定義する必要があります。クラスChild04では、Changeメソッドの中で、String配列の中身をすべて小文字に変換しています。また、mainメソッドからChangeメソッドを呼び出し、変換後のString配列の要素を出力しています。現在、コマンドプロンプトでコードをコンパイルしようとしていますが、エラーが表示されてしまいます。エラーの意味や解決策を教えてください。
*
クラスParent04に受け取ったString配列の中身を全て大文字に変換するChangeメソッドが定義されています。クラスParent04を継承するクラスChild04でChangeメソッドを
オーバーライドして、String配列の中身を全て小文字に変換するように変更してください。
その後クラスOverRide04のmainメソッドからChangeメソッドを呼び出して、
変換後のString配列の要素を全て出力してください。
*/
// オーバーライドされるので覆い隠される
class ORParent04{
public String[] Change(String[] strArray){
int len = strArray.length;
String[] Array = new String[len];
for(int i = 0; i < len; i++){
Array[i] = strArray[i].toUpperCase();
}
return Array;
}
}
// ORParent04クラスを継承し、ORChild04でオーバーライド
// こちらが適用される。
class ORChild04 extends ORParent04{
//ここからプログラムを追加してください。
public String[] Change(String[] strArray){
int len = strArray.length;
String[] Array = new String[len];
for(int i = 0; i < len; i++){
// toLowerCaseで小文字に変換
Array[i] = strArray[i].toLowerCase();
}
// 値を返す
return Array;
}
}
class OROverRide04{
public static void main(String[] args){
// ORChild04クラスのインスタンス化
ORChild04 ORchild04 = new ORChild04();
//ここからプログラムを追加してください。
// Changeメソッドの呼び出し:戻り値String[],引数String[]
String[] array = ORchild04.Change(String[] args);
// 表示
System.out.println(array);
}
}
このような問題で、現在これをコマンドプロンプトでコンパイルすると、mainメソッド内のString[] array = ORchild04.Change(String[] args);メソッド呼び出し部分が指定され、
「'.class'がありません」
「;がありません」
という2つのエラーが表示されます。ネットでエラー表記の意味を検索し、コードを確認しましたが、「{}」と上記より上の行の;が特に抜けている、という訳ではありません。勿論自分が何か見落としている為にコンパイルエラーになるのですが、戻り値と引数の値は合わせているので、心情としては「動けジ・O!何故動かん!?」という具合です。
どなたか考え方やヒントなどお願い致します。後もう少しだと思うのですが。。。