【独学】はじめてのAndroidプログラミング – 4.8 Java言語の基礎(インポート、スーパークラスとインタフェース)

パッケージとはJavaのクラスをまとめて分類する仕組みで、そのパッケージを呼び出すインポートについて説明します。また、クラスの継承するスーパークラス・ サブクラスと、メソッドの仕様(戻り値とメソッド名、引数)のみを定義したインタフェースとその使い方を説明します。

カリキュラムのサンプル コードは、「Javaコードの実行」に示す手順で実行して確認できます。また「Javaクラス用のファイル作成」でJavaクラス用のファイルを作成できます。このカリキュラムでは、「Example.java」と「Example1.java」を作成します。

パッケージ・インポート

パッケージとは、Javaのクラスをまとめて分類する仕組みになります。クラス数が大量にある場合、それらを機能などで分類してまとめることで、クラスの管理が容易になります。Androidプロジェクトでは、プロジェクトの作成で入力した「パッケージ名」がパッケージ名になります。

クラスの先頭で次のように「package」と宣言することで、そのクラスが分類されるパッケージを指定できます。

package パッケージ名

次の例の場合、パッケージ名は「com.example.myapplication」となります。

package com.example.myapplication;

public class SampleClass {
    // ここにクラスのメンバーなどを記述
}

インポートとは、別packageからクラスを呼び出す。import文の構文を次に示す。

import パッケージ名.クラス名;

「MainActivity.java」では次のようにクラス宣言の前にpackage文やimport文が定義されます。

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

スーパークラス・ サブクラス

スーパークラスは、クラスの継承する場合に、元からあった方(継承元)のクラスを指し、サブクラスは、新しく作られた方(継承先)のクラスを指します。継承とは、スーパークラスから要素を受け継いで、スーパークラスの特徴を備えた新しいクラス(=サブクラス)を作成することを指します。

  • サブクラスはスーパークラスのフィールドとメソッドを受け継ぐ
  • スーパークラスのコンストラクタは継承されない

次のJavaコードでは、スーパークラスは「Example」、サブクラスは「Example1」となります。サブクラス「Example1」のクラス宣言時に extends キーワードを用いてスーパークラス「Example」を宣言します。

Example.java

package com.example.myapplication;

public class Example  {
    int x1 = 23;
    int y1 = 45;

    void setSize(int x, int y) {
        x1=x;
        y1=y;
    }
}

Example1.java

package com.example.myapplication;

public class Example1 extends Example  {

}

サブクラス「Example1」では「x」と「y」が宣言されていなくても、どちらも保持しています。

MainActivity.java

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

// import 文があればここに書く

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // ここにサンプルコードの文を入れる

        Example1 example1 = new Example1();

        System.out.println(example1.x1);         // 23
        System.out.println(example1.y1);         // 45
    }
}

またサブクラス「Example1」でもメソッド「setSize」を呼び出すことができます。

MainActivity.java

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

// import 文があればここに書く

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // ここにサンプルコードの文を入れる

        Example1 example1 = new Example1();

        example1.setSize(67,89);
        System.out.println(example1.x1);         // 67
        System.out.println(example1.y1);         // 89
    }
}

インタフェース

インタフェースとは、抽象メソッドと呼ばれる、メソッドの仕様(戻り値とメソッド名、引数)のみを定義したものです。

インタフェースを使って型宣言を行うことができますが、メソッドの定義がないとプログラムは実行できません。「implements」は、インタフェースに定義されているメソッドを実装するクラスであることを宣言しています。

記述方法は、クラスの定義時に以下を追記します。

implements インターフェイス名

次のJavaコードでは、インタフェース定義を行った「Example」、メソッドを実装するクラス「Example1」となります。メソッドを実装するクラス「Example1」のクラス宣言時に implements キーワードを用いてインタフェース定義を行った「Example」を宣言します。

インタフェース定義を行った「Example」で「exMethod」メソッドを定義します。

Example.java

package com.example.myapplication;

public interface Example {
    public int A = 3;

    //メソッド(型のみ宣言)
    void exMethod();
}

メソッドを実装するクラス「Example1」で「exMethod」メソッドを実装します。

Example1.java

package com.example.myapplication;

public class Example1 implements Example {
    // メソッドの実装
    public void exMethod() {
        System.out.println("A: " + A);
    }
}

メソッドを実装するクラス「Example1」から「exMethod」メソッドを実行します。

MainActivity.java

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

// import 文があればここに書く

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // ここにサンプルコードの文を入れる

        Example1 example1 = new Example1();
        example1.exMethod();    // A: 3
    }
}

本節の説明は以上になります。

タイトルとURLをコピーしました