Developer

【はじめてのJava】同名の変数1【オブジェクトとクラス編】
2021.11.30
Lv1

【はじめてのJava】同名の変数1【オブジェクトとクラス編】

はじめてのJava

このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。


オブジェクトとクラス編

オブジェクトとクラス編では、Javaを扱う上で非常によく出てくる「オブジェクト」や「クラス」について扱っていきます。

前回は「ローカル変数のスコープの注意点」について扱いました。

今回は「同名の変数(インスタンス変数とstatic変数の場合)」について紹介します。


目次


変数のスコープ

 変数のスコープ とはその変数を利用可能な範囲のことです。

以前紹介したように「インスタンス変数」「static変数」「ローカル変数」では、変数のスコープが異なります。
では、もしも「インスタンス変数」「static変数」「ローカル変数」が同名だった場合はどうなるのでしょうか。

詳しく見ていきましょう。


同名のインスタンス変数とstatic変数

インスタンス変数とstatic変数は 同名にすることができません 。同名にした場合は コンパイルエラー です。

インスタンス変数とstatic変数はどちらもクラス内なら利用可能な変数です。筆者の主観ですが、利用できる箇所が似すぎていて紛らわしく、同名で定義できる利点がほとんどないため、このような仕様になったものと思われます。

具体例を見てみましょう。


具体例

以下は、Sampleクラスにインスタンス変数とstatic変数を定義しています。2つの変数ともにnumという変数名で定義しています。

public class Sample{
  int num = 1;
  static int num = 2;
}

これをコンパイルしようとすると、3行目でコンパイルエラーとなります。



まとめ

インスタンス変数とstatic変数は同名では定義できない

次回

次回も同名の変数について扱います。


はじめてのJavaシリーズの目次はこちら
オブジェクトとクラス編はこちら


java 11 の練習問題一覧はこちら
はじめてのJavaシリーズの練習問題一覧はこちら