【基礎】Javaのクラス、パッケージ、インポートとは??【Java Silver】

こんにちは。
Java を学習していて、「結構ややこしいルール多いな」と思ったので、
誰がみてもわかりやすい備忘録的な位置づけで本ブログを書いています。

以下に当てはまる方は、ぜひご活用ください!

  • ある程度コードが書くことができ、オラクル資格:Java Silverを取得しようとしている
  • 覚えきれないJavaのルールを見返せるものがほしい

今回は、下記ソースを参考にJavaクラスの基本構造について説明します。

ソース1:メインパッケージ.メインクラス

package jp.co.MainPackage; 

import static jp.co.SubPackage.MainClass.print;

public class MainClass{
 public static void main(String[] args){
 print();
 }
}

ソース2:サブパッケージ.メインクラス

package jp.co.SubPackage;

public class MainClass{
 public static void print(){
  String out = “出力文”;
  System.out.println(out);
 }
}

クラス

クラスはフィールドとメソッドの2つで構成されます。
参考ソースの内、クラスに該当する領域は以下になります。

ソース1:メインパッケージ.メインクラス

public class MainClass{
 public static void main(String[] args){ 
 print();
 }
}

ソース2:サブパッケージ.メインクラス

public class MainClass{
 public static void print(){
  String out = “出力文”;
  System.out.println(out);
 }
}

アプリケーションのエントリーポイント

条件は以下の通りです。

  • 公開されていること→public
  • インスタンス生成なしで実行できること→static
  • 戻り値は無しに設定されていること→void
  • メソッド名→main
  • 引数がString型の配列(可変長引数)であること→ String[]

String[]の引数は、以下のJavaコマンド実行時に指定された引数が入ってきます。
javaコマンド:java [クラス名] [引数][引数2][引数3]….
「例:java MainClass windows macbook」であれば引数は「windows」と「macbook」になります。

フィールド

プログラム内で使用するデータを保持します。

メソッド

フィールドで保持したデータを処理します。

パッケージ

パッケージの目的は、アクセス制御機能であり、
「パッケージ名.クラス名」の完全修飾クラス名によって、

他のソフトウェアと重複してしまうクラス名を識別することです。
よってパッケージ名は一意である必要があります。

例(下線がパッケージ名):
・jp.co.MainPackage.main
jp.co.SubPackage.main
→同じ「クラス名:main」がパッケージにより識別される。

インポート

他クラスのフィールド・メソッドにアクセスできるようにするためのものです。

ソース1:メインパッケージ.メインクラス

package jp.co.MainPackage; 

import static jp.co.SubPackage.MainClass.print;

public class MainClass{
 public static void main(String[] args){
  print();   
 }
}

ソース2:サブパッケージ.メインクラス

package jp.co.SubPackage;

public class MainClass{

public static void print(){
 String out = “出力文”;
 System.out.println(out);
 }
}

上の参考ソースの例であれば、

mainメソッドでSubClassパッケージのMainClassの「print()」を呼び出そうとしています。
そのためには、「import static jp.co.SubPackage.MainClass.print;」を設定することで、
他パッケージ・クラスのメソッドの使用が可能になります。


import文が不要です。

  • アクセス先のフィールド・メソッドが同じパッケージ
  • 継承関係かつ、アクセス先が親(superクラス)

以上。

Follow me!

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です