5. クラスとメソッド

はじめに

今回のテーマは

  • クラス
  • メソッド

についてです。

クラスとメソッドは、Java でコードを書いていくにあたってとても大切な考え方になります。

Android Studio を使ったアプリ開発ではクラスとメソッドをたくさん組み合わせて開発していくことになるので、ここでしっかりと理解しておきましょう

 

クラスとは?

1. 基本的な使い方

java でコードを書く場合、必ずクラスを1つ用意する必要があります。

 

書き方は class クラス名 と書いて {} をつけるだけです。

これがクラスの基本型です。

 

一つ覚えていただきたいルールが「クラス名の最初の文字は大文字にすること」です。
例)Sample, Test, Animal, Car

単語の区切りも大文字にします。
例)SampleProject, TestClass, MyCar

 

クラスがどんなものなのか、ロボットを動かすプロジェクトを例にして考えてみましょう。

まずは Robot クラスを用意します。

 

このクラス内にロボットの頭・腕・足を動かすコードを書いていきますが、全てを Robot クラスの中に書こうとすると以下のようになります。

今は文字だけで書いているので良いですが、これをコードで書いていくと何十行・何百行にもなります。

もちろんプログラムとしては動きますが、どこに何のコードを書いているのか分かりにくくなり、コードの管理が難しくなります。

 

この時に便利なのがクラスです。

 

クラスは複数作成することができるので「メインのクラスを1つ用意して、そこに補助的なクラスを組み込んでいく」という使い方ができます。

ロボットの場合は、Robot クラスとは別に

  • 頭を動かすクラス
  • 腕を動かすクラス
  • 足を動かすクラス

を作成して、これを Robot クラスと組み合わせて使うことができます。

image1

 

このようにクラスを分けて書くことでコードが読みやすくなることはもちろんですが、複数人で開発する時にも役立ちます。

例えば

  • A さんは Head クラス担当
  • B さんは Arm クラス担当
  • C さんは Leg クラス担当

とクラスごとに役割分担してコードを書くことができます。

また途中で「頭を動かす機能はいらないな」と思ったら、 Head クラスだけを Robot クラスから外せば良いわけです。

 

クラスを上手く使うことで、効率的に開発を進めていくことができます。

具体的な使い方は実際にコードを書きながら紹介していきますが、クラスがどんなものかイメージが湧いたでしょうか?

Android Studio でのアプリ開発では、この「クラス」をたくさん使って開発していくことになります。

 

 

2. コメントの書き方

コードやテキストの前に // をつけることで、その行を「コメント」とすることができます。

class Sample {
  // ここにコメントを書きます。
}

コメントとは「プログラムには影響しないけれど書いておきたいこと」です。

プログラムに影響しないからといって何を書いて良いわけではありません。

コードを読みやすくしたり、コードの作成者や権利について書く場合にも使用します。

 

複数行のコメントを書くときは /**/ で囲みます。

class Sample {
  /*
    複数行のコメントを
    書くことができます。
  */
}

 

 

MainActivity.java の構造

1. クラス

Android Studio ではどのようにクラスが作成されるのか確認してみましょう。

MainActivity.java を開いて下さい。

7行目に MainActivity クラス がありますね!

image2

 

クラス名 MainActivity もルールの通り、最初の文字と単語の区切りが大文字で書かれています。

 

もう少し詳しくコードを見てみましょう。

public class MainActivity extends AppCompatActivity {

 

public

クラス名に public を付けるかどうかで、このクラスを使える範囲を制限することができます。
現時点では「クラスは public にする」と理解しておいて下さい。

 

extends

extends(エクステンズ) は「拡張する」という意味で

class MainActivity extends AppCompatActivity

「MainActivity クラスは AppCompatActivity クラスを拡張する」という意味になります。

 

このとき MainActivity クラスをサブクラス、拡張するクラスのことをスーパークラスと呼びます。

image3

 

前回「Android 開発ではアクティビティで画面を作っていく」と紹介しました。

そのアクティビティに関する基本的な機能、例えば画面の開始・終了、ナビゲーションバーの作成などのコードを用意してくれているのが AppCompatActivity クラスです。

AppCompatActivity クラスを拡張することで、AppCompatActivity クラスにあるコードを MainActivity クラスでも使えるようになるので、自分で画面の開始・終了などのコードを自分で書く必要がなくなります。

スーパークラスのメソッドを使うことを「スーパークラスのメソッドを継承する」とも言います。

拡張できるクラスは AppCompatActivity クラス以外にもありますが、これはアプリを開発しながら徐々に覚えていけば問題ありません

 

 

2. package

次は MainActivity.java の1行目を見てみましょう。

package com.example.sample;

ここにはプロジェクトを作成した時のパッケージ名が表示されています。

ここを変更してしまうとプロジェクトを実行できなくなってしまうのでご注意ください。

 

 

3. import

次は MainActivity.java の3行目です。

コードが折り畳まれていると思うので「+」を押して開いてください。

image4

 

import androidx.appcompat.app.AppCompatActivity;

import(インポート)は「取り込む」という意味で、先ほど継承した AppCompatActivity クラスを取り込んでいます。

AppCompatActivity クラスは androidx/appcompat/app/AppCompatActivity.java ファイルに書かれているので、androidx.appcompat.app.AppCompatActivity という書き方になっています。

 

AppCompatActivity.java ファイルの中身を少し見てみましょう。

Windows の場合は Ctrl キー、Mac の場合は Command キーを押しながら、AppCompatActivity をクリックして下さい。

image5

 

MainActivity と同じように class AppCompatActivity と書いてクラスが作成されていることが分かりますね。

image6

 

5 行目の import android.os.Bundle; も同じように Bundle クラスを取り込んでいます。

 

 

 

4. メソッド

MainActivity クラスの中に protected void onCreate(Bundle savedInstanceState) { というコードがあります。

クラスの中にあるこのまとまりをメソッドと言います。

image7

 

メソッドとは簡単に言うと「処理をまとめたもの」です。

メソッドには

  1. 処理を行うだけのメソッド
  2. 処理をして結果を返すメソッド

の2種類があります。

 

1. 処理を行うだけのメソッド

例として簡単なメソッドを用意してみました。

void sample() {
    // ここに処理を書いていきます。
}

void は空っぽという意味で「処理だけをする」メソッドに使います。

 

 

2. 処理をして結果を返すメソッド

処理をして結果を返すメソッドの場合は、void ではなく結果として返したいデータ型を書きます。

boolean sample() {
    // ここに処理を書いていきます。
    return true;
}

データ型については次回以降詳しく紹介しますが、boolean 型は true または false の値をもつデータ型です。

 

処理をして結果を返すメソッドは、結果として返したいデータ型を指定して、そのデータ型の値を return で返します。
このとき返す値を「戻り値」と言います。

image8

 

 

引数

メソッド内で使いたい値がある場合は()の中に値を書くことができます。これを「引数」と言います。

void sample(引数1, 引数2) {
    // ここに処理を書いていきます。
}

 

もう一度 onCreate メソッドを見てみましょう。

image9

void なので onCreate メソッドは処理をするだけのメソッドであることが分かります。

Bundle savedInstanceState は引数です。

protected は修飾子と言います。次回以降の記事で紹介していきます。

 

onCreate メソッドはアクティビティを初期化するメソッドで、MainActivity を呼び出した時に必ず実行されます。

アクティビティを作成すると必ずこの4行が追加されるので「onCreate メソッドは初期化する場所」と覚えておいて下さい。

 

 

@Override

onCreate メソッドのすぐ上に @Override と書いてあります。

Override(オーバーライド)は英語で「優先する、無効化する」という意味ですが、Java では「上書きする」に近い意味で使われます。

 

メソッドのすぐ上に @Override と書くことで「スーパークラスにある同じ名前のメソッドを上書きしている」ことを表しています。

 

MainActivity クラスは AppCompatActivity クラスを継承しているので、AppCompatActivity がスーパークラスでしたね。

ここでは、スーパークラス AppCompatActivity クラスにある onCreate メソッドを上書きしているので @Override と書かれています。

 

AppCompatActivity.java を確認してみると onCreate メソッドがあります。

image10

 

AppCompatActivity.java の onCreate メソッドにも @Override が付いているので、AppCompatActivity クラスもスーパークラスから onCreate メソッドを上書きしていることが分かります。

 

@Override を書かなくてもプログラムは動きますが、きちんと書いておくことでメソッドに間違いがあった場合などにエラーを表示してくれます。ほとんどの場合 Android Studio 側で自動的に追加してくれるので現時点ではあまり気にしなくて大丈夫です。

 

 

まとめ

少し盛りだくさんになってしまいましたが、いかがだったでしょうか?

extends, override, import などはコードを書きながら覚えていくものなので「なんとなく分かるかな」くらいで大丈夫です。

現時点では

  1. java では クラスを必ず1つ用意する。
  2. クラス名の最初の文字と単語の区切りは大文字で書く。
  3. メソッドには「処理を行うだけのメソッド」「処理をして結果を返すメソッド」がある。
  4. onCreate メソッドはアクティビティを初期化するメソッド。

ということを覚えておいてください。

 

次に行うこと

次回は少しコードを書きながら、クラスとメソッドについてもう少し詳しく調べてみましょう

 

 

コメント

0 コメント