Java入門

Android開発のためのJava入門 第5回「クラスとメソッド」

 

ここまでの記事はこちら
 

今回のテーマは

  • クラス
  • メソッド

についてです。

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

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


 

クラスとは?

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

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

 

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

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

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

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

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

 

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

 

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

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

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

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

Robot クラスとは別に

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

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


 

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

例えば

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

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

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

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

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

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

コメントの書き方

文の前に // をつけることで、その行を「コメント」とすることができます。

class Sample {
  // ここにコードを書いていきます。
}

 

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

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

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

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

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

 
 

MainActivity.java の構造

クラス

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

MainActivity.java を開いて下さい。

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


 

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

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

public class MainActivity extends AppCompatActivity {

 

public

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

extends

extends(エクステンズ) は直訳すると「拡張する」という意味ですが、java では「継承する」と言います。簡単に言うと「引き継ぐ・受け継ぐ」という意味です。

ですので class MainActivity extends AppCompatActivity「MainActivity クラスは AppCompatActivity クラスを継承します」という意味になります。
 

この継承するクラスのことを「スーパークラス」と呼びます。


 

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

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

AppCompatActivity クラスを継承することで、これらのコードを自分で書く必要がなくなるのです。

継承するクラスは AppCompatActivity クラスだけとは限りませんが、アプリを開発しながら徐々に覚えていけば問題ありません
 

package

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

package jp.codeforfun.sample;

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

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

import

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

import androidx.appcompat.app.AppCompatActivity;

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

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

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

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


 

MainActivity と同じように class AppCompatActivity と書いてクラスが作成されています。


 

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

onCreate メソッド

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

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


 

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

メソッドには

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

の2種類があります。
 

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

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

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

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

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

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

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

 

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

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


 

引数

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

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

 
 

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


 

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

Bundle savedInstanceState は引数です。

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

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

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

@Override

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

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

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

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

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

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


 

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

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

まとめ

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

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

現時点では

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

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

次に行うこと

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

第6回「Hello Worldを書き換える」に進む
 

ABOUT ME
Sara
Sara
「わかりやすく・シンプル」をモットーに、スマホアプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂
独学は難しそうと感じたら

 
独学でプログラミングを勉強するのは難しそう、効率的にプログラミングを学びたいという方はオンラインスクールがオススメです。

オンラインスクールを選ぶときのポイント

  • 無料体験があること
  • 個別サポートがあること

自分にあったスタイルを見つけるために、無料体験のご利用をオススメします。(無料体験後に自分には合わないなと感じたらハッキリ断ってしまって問題ありません。)
 
個別サポートもプログラミング学習に挫折しないために重要なポイントです。エラーや困った時にすぐに個別対応をしてくれるスクールを利用して下さい。

ここでは3つのオンラインスクールを紹介します。
全て無料体験がありますので、ぜひ自分に合ったスクールを見つけてみて下さい????
 

1. TechAcademy(テックアカデミー)

オンライン完結で勉強できるスクールで、コースがとても充実しています。チャットで質問すればすぐに回答を得られるのが一番のおすすめポイントです。
オリジナルのサービスやアプリの開発もサポートしてくれるので、開発したいものが決まっている人にもオススメです。

無料体験はこちら

2. CodeCamp(コードキャンプ)

一対一で受講できる個別指導のプログラミングスクールです。
Webデザイン・Webサービス開発・アプリ開発などを幅広く学習することができます。
マンツーマンなので自分のペースで学習できて、質問もその都度できるのがメリットです。

無料体験レッスンはこちら

3. Treehouse

英語でも良い、英語とプログラミングを同時に勉強したいという方は Treehouse がオススメです。月25ドルで始めることができて、たくさんのプログラミング言語を学ぶことができます。
個別サポートはありませんが、掲示板が充実しています。ほとんどの場合、質問してから30分程度で回答を得ることができます。

7日間の無料体験はこちら

COMMENT

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

CAPTCHA