empl
Sa
山田 猛矢・比嘉 築 著 持増 宏大 絵

はじめにみなさーん。こんにちわわわわわー。再び帰ってきましたー。
「卒 Java原人

君は Java 新人に進化できるか !?」の続編でーす。

「卒 Java 原人」読者から，次に何の本を勉強すればいいかと聞かれ，一般のやさしいと思われる入門書を紹介したところ，やっぱり挫折・・ザセツ・ということで，本書はもうちょっと Java を身近に感じてもらうたe

ざせつめに，なんとなくわかってもらうために，わかった気になってもらうために，Java 新人としての一歩を踏み出してもらえるように書きましたー。

mplなので，「卒 Java 原人」と同様，本書をすべてマスターしたからといって，“ これで Java はもう完璧 ” というわけではありませーん。Java 入門のための入門書という位置づけなのでお忘れなく。

で，本書でやる内容ですが，基本的に「卒 Java 原人」の最後に作ったプログラム（再生ボタンを押すと車が動くアレ）と同じようなものを作っていきまーす。って，がっかりしないでね。もちろん違いはあるんで。

本書では「卒 Java 原人」で使った AnimationFrame クラスは使わずに，Java の標準クラスライブラリだけを使って作っていきまーす。第 1 章から第 6 章までは，そのために必要なこと，知っといてもらいたい基本的なこSaとを書いてまーす。基本的なクラスの話から始まって，継承の話まで。で，第 7 章以降で標準クラスライブラリを使ってプログラムを作っていきまーす。もちろん，第 7 章以降でも，第 6 章までで書ききれなかったインタフェー
スや例外の話を書いてまーす。ぜひ最後まで読んで Java 新人としての一歩を踏み出してもらえたらと思いまーす。
なお，「卒 Java 原人」をまだ読んでないって人は，ぜひ「卒 Java 原人」から読んでね♡で書いてるんで。

2

だってー，本書は「卒 Java 原人」を読んだっていう前提では，早速。

Sampleいざ，第2ステージへ

3

目次612

CHAPTER 2クラスにメソッドを追加しよう!!
2.1 引数と戻り値
2.2 「引数なし」「戻り値あり」のメソッド

14
16

CHAPTER 3
引数を持つメソッドを追加しよう!!
3.1 「引数あり」のメソッド
3.2 「引数2つ」のメソッド

25
29

mple

CHAPTER 1
フィールドのみのクラスを作ってみよう!!使ってみよう!!
1.1 フィールド1つのクラスを作ってみよう!!使ってみよう!!
1.2 フィールド2つのクラスを作ってみよう!!使ってみよう!!

CHAPTER 4
アクセス修飾子でカプセル化
4.1 フィールドに値を代入するより良い方法は？
4.2 アクセス修飾子
コラムA パッケージ

45

コラムB staticなフィールドやメソッドを作ろう

47

50
53
56

CHAPTER 6
継承ってなに？
6.1 継承ってなに？
6.2 サブクラスへの機能追加
6.3 メソッドのオーバーライド

59
62
65

Sa

CHAPTER 5
コンストラクタってなに？
5.1 コンストラクタってなに？
5.2 引数を持つコンストラクタ
5.3 コンストラクタとインスタンスコラムC Androidアプリにチャレンジ!?

4354069

707476

CHAPTER 8フレームに絵を描こう!!
8.1 フレームに絵を描こう!!

80

858793mplCHAPTER 9ボタンを追加しよう!!
9.1 ボタンを設置しよう
9.2 ボタンにイベント処理を追加しよう
9.3 ボタン2個での処理

e

CHAPTER 7JFrameクラスを使ってみよう!!
7.1 JFrameクラスを使ってみよう!!
7.2 コンストラクタに引数を指定
7.3 フレームを2つ作ってみよう!!

コラムD レイアウトマネージャー

97

コラムE イベント処理

100

CHAPTER 10
スレッドを使ってみよう!!
10.1 スレッドって何？

102

Sa

コラムF Threadクラスを継承
最後に

114
116

注意

• 本書に記載されている社名，製品名などは，一般に各社の商標または登録商標です。
本文中では ©，®，TM，などの表記は省略しております。
• 本書に記載された内容は執筆時点の情報です。今後，本文中に記載されている URLや製品仕様等は予告なく変更される可能性があります。
• 本書に記載された説明，プログラム等を運用した結果について著者および発行所は一切責任を負いません。個人の責任の範囲でご使用ください。

5

Chapter 1
フィールドのみのクラスを作ってみよう!!使ってみよう!!

e

1.1 フィールド1つのクラスを作ってみよう!!使ってみよう!!
ようこそ !! Java 新人のみなさーん。
「卒 Java 原人」での内容は，まだ覚えてmplるかなー？ Math クラスや AnimationFrame クラス（著者オリジナルクラス）のフィールド（変数）やメソッド（処理）の使い方，覚えてるかなー？

本書では，もう一歩，Java の世界に足を踏み出してもらいたいと思ってまーす。具体的には，Java の標準ライブラリ（JDK をインストールした時に標準で入ってるやつで，API ドキュメントに説明のあるクラス）のみ使って，「卒Java 原人」でやったようなことをやっていきSaまーす。

再び「やる気」スイッチ ON!!

ま，気楽にやっていこーー。

まずは，クラスの理解をさらに深めるために，（AnimationFrame クラスのような）オリジナルのクラスを自分たちで作って，そのクラスを実際に使ってみましょーー。と，その前に，復習でーす。
「卒 Java 原人」の64 ページでやったんだけど，クラスはフィールド（変数）とメソッド（処理）の 2 つの部分からできフィールドてるって覚えてるかなー？忘れてたーって人は思い

メソッド

出して♥6

クラス

Chap1 フィールドのみのクラスを作ってみよう!!使ってみよう!!

最初は，フィールド（変数）のみを持つ YMath クラスというオリジナルのクラスを作って，それを使ってみましょー。
クラスの作り方はclass クラス名{・・・}でーす。簡単でしょ。
今回はフィールド（変数）のみのクラスなんで，epublic static void main(String[] args){・・・}

mplってのはいりませーん。これメソッドだし。

じゃー，早速オリジナルのクラス，YMath クラスを作ってみましょー。次のプログラムを入力し，ファイル名 YMath.java で保存してコンパイルしてみてみて。
（クラス名とファイル名が一致してないといけなかったこと覚えてた？）
ちなみに，実行はしなくていいよ。ってかできないよ。だって実行したときに，最初に呼ばれるメソッド main()（エントリーポイントってやつ）が無いもーん。
Source1
2

double ye = 2.7;}Sa

3class YMath{

どう？

簡単でしょ。単純でしょ。

では解説をば。1 行目はいいよね。Java はクラス単位で書かれるので 1 行目は「class クラス名」から始まりまーす。ここでは，クラス名は YMath。
2 行目が YMath クラスの中身でーす。見てわかるように，このクラスはフィールド（変数）を 1 つだけもつクラスでーす。具体的には，double 型のフィールド ye を 1 つだけ持ってまーす。もちろん ye には 2.7 が代入されてまーす。
では，ちょっとこのオリジナルの YMath クラスを使ってみましょー。

7使い方は「卒 Java 原人」で使ってた AnimationFrame クラスの使い方と一緒。
まずはインスタンス（クラスのコピーみたいなやつ）を生成

クラスのフィールド（変数）やメソッド（処理）を使うときは，インスタンス（クラスのコピーみたいなやつ）を生成してから使うんでござる。
覚えとったかなー？

（キーワードは「new」）して，フィールド（変数）にアクセスしてみまーす。
次のプログラムをコンパイル& 実 行 し て み て み て。 も ち ろ んeYMath クラスを使ってるんで，YMath.class と同じフォルダに入れてね。
Source23456public static void main(String[] args){
YMath ym = new YMath();System.out.println(ym.ye);

}}

Sa

7

class StepR1{mpl1

図 1.1 StepR1 の実行できたー？

図 1.1 みたいになったー？

簡単に説明をば。3 行目で，YMath 型の変数 ym を宣言して，それと同時にYMath クラスのインスタンス（クラスのコピーみたいなやつ）を生成して ymに代入してまーす。インスタンス（クラスのコピーみたいなやつ）の生成方法はnew クラス名( )8Chap1 フィールドのみのクラスを作ってみよう!!使ってみよう!!

だったよねー。覚えてたー？

ちなみにインスタンス（クラスのコピーみたいなやつ）を代入する変数の型名は，「クラス名」と同じになりまーす。これまた覚えてたー？ AnimationFrame クラスを使うときもAnimationFrame af = new AnimationFrame();って書いてたでしょ。あの時と同じ。今回は YMath クラスを使うんでってなりまーーす。

eYMath ym = new YMath();で，5 行目でフィールド ye を出力してまーす。ym インスタンスのフィール

mpl

ド ye にアクセスするんでインスタンスを代入した変数名.フィールド名って書いてフィールド ye を出力してまーす。

じゃー次は，2 つのインスタンス ym1，ym2 を生成し，インスタンス ym2の方だけに 5.0 を代入してみましょー。

次のプログラムをコンパイル & 実行してみてみて。

SaSource
1class StepR2{

public static void main(String[] args){

23YMath ym1 = new YMath();

4YMath ym2 = new YMath();5ym2.ye = 5.0;

6
7
8

System.out.println(ym1.ye);9System.out.println(ym2.ye);
}

1011}

9

図 1.2 StepR2 の実行

図 1.2 みたいな結果が出ましたー？

簡単に説明をば。

みたいなやつ）でーす。
newコピーym1

ye = 2.7

ym2mplYMathクラスeym1 も ym2 も同じ YMath クラスから生成したインスタンス（クラスのコピーdouble ye = 2.7

new
コピー

インスタンス

ye = 2.7

インスタンスでも 6 行目で，ym2 の方のフィールド ye には 5.0 を代入してるんで，それぞれの ye を出力すると，2.7 と 5.0 が出力されまーす。

SaYMathクラス

new
コピー

double ye = 2.7

new
コピー

ym1

ye = 2.7

インスタンスym2

ye = 2.7 5.0
インスタンス

こんな風に，同じ YMath クラスからインスタンス（クラスのコピーみたいなやつ）を生成するけど，一旦生成してしまえば，後はそれぞれ処理されていくん
で，それぞれのインスタンス（クラスのコピーみたいなやつ）で ye の値が変わっていきまーす。
ym1 と ym2 は，同じ YMath クラスから生まれてくるんで兄弟みたいなもん
だけど，生まれた後は別々の道を歩んでいきまーす。

10

Chap1 フィールドのみのクラスを作ってみよう!!使ってみよう!!

演習 1_1次のプログラムを実行すると，どんな結果がでるでしょう？想像してから確認してね。もちろん YMath.class と同じフォルダで実行してね。
Source1class Ex1_1{
public static void main(String[] args){

23

YMath ym1 = new YMath();

4

YMath ym2 = new YMath();e

56ym2.ye = 3.5;

7double y = ym1.ye + ym2.ye;

9
10
11m
pl

8

System.out.println(y);}}同じところから生まれても，Sa

生まれた後は別々の道を歩むのだー !!

11

1.2 フィールド2つのクラスを作ってみよう!!使ってみよう!!
じゃー次に，YMath クラスにもう一つフィールド（変数）を追加し，フィールド（変数）を 2 つにしてみましょー。YMath クラスに網掛け部分を追加してね。
Source1class YMath{

2double ye = 2.7;

3double ypi = 3.14;}

e4

変更が終わったらコンパイルしといてね。YMath クラスのコンパイルが終わっ

Source1234
567

class StepR3{

public static void main(String[] args){
YMath ym = new YMath();double z = ym.ye + ym.ypi;
System.out.println(z);}Sa8mplたら，次のプログラムをコンパイル & 実行してみてみて。

9}

図 1.3 StepR3 の実行

12Chap1 フィールドのみのクラスを作ってみよう!!使ってみよう!!

図 1.3 みたいになったー？

ま，たぶん，これも大丈夫だよね？

インスタンス ym のフィールド ye とフィールド ypi を足し合わせた結果を z に代入してるんで，出力は 5.84 ってなりまーす。

演習 1_2
YMath クラスのインスタンス ym を生成し，そのフィールド ye に5.0，ypi に 10.0 を代入し，それらの足し合わせを出力するプログラム（Ex1_2.java）を作成せよせよ。

e

注意：YMath クラスのソースコードのフィールド ye，ypi を直接書き換えるんじゃなくて，Ex1_2.java の中で ye，ypi にアクセスし，mplye に 5.0，ypi に 10.0 を代入してね♥（StepR2 の 6 行目みたいに。
）

オリジナルで作った「YMath クラス」とそれを使う「StepR◯クラス」の 2 つクラスがあるんで，ごっちゃにならないよう

YMath

StepR◯

オリジナルのクラス

YMath ym= new YMath();StepR◯クラスの中で，オリジナルクラスである
YMath クラスを利用Saにするでござる。

以上で，本章は終わりでーーす。フィールドのみもつクラスの作り方，使い方はわかってもらえたかなーー？

13著者略歴
山田猛矢（やまだ たけし）

1975 年 誕生
2003 年 鹿児島大学大学院理工学研究科 博士前期課程 物理科学専攻 修了 修士（理学）2005 年 鹿児島第一高等学校 教諭
2006 年 第一工業大学（現・第一工科大学）工学部総合科学 講師
2010 年 第一工業大学（現・第一工科大学）工学部情報電子システム工学科 講師
2019 年 第一工業大学（現・第一工科大学）工学部情報電子システム工学科 准教授
2020 年 鹿児島大学大学院理工学研究科 博士後期課程 総合理工学専攻 修了 博士（工学）2022 年 第一工科大学工学部情報電子システム工学科 教授

比嘉e

現在に至る築（ひが きずく）

mpl

1980 年 誕生

2007 年 鹿児島大学大学院理工学研究科 博士前期課程 物理科学専攻 修了 修士（理学）
前後にプログラマ・システムエンジニア，専門学校講師として勤務
2012 年 フリーとなり E Cube Factroy 名で活動
2016 年 合同会社イー・シー・エフ 代表社員
現在に至る

進め !! Java 新人 〜はじめの一歩〜
2023 年 12 月 21 日 初版 1 刷発行

Sa

2023 年 12 月 31 日 初版 2 刷発行
著者

山田猛矢・比嘉

イラスト

持増宏大

発 行 人比嘉築

発 行 所

E Cube Factory

築〒 904-0322 沖縄県中頭郡読谷村字波平1648
URL：https://www.e3factory.com/book/©2023 Takeshi Yamada, Kizuku Higa, Koudai Mochimasu

Printed in Japan

ISBN978-4-9907324-2-4
定価は裏表紙に表示してあります。
正誤表などの補足情報は以下の Web サイトをご確認ください。
https://www.e3factory.com/book/susume-java-shinjin/