SlideShare une entreprise Scribd logo
1  sur  84
Javaプログラミング入門
第5回
今日の内容
• 前回の復習
• スーパークラスとサブクラス
クラスとインスタンス
クラスとインスタンス
• クラスのインスタンスは共通の性質を持つ
Stringクラス
Stringのインスタンス
Stringのインスタンス

"田中"

"Hello World! "
Stringのインスタンス
"Java"
インスタンス
• インスタンス(instance)は具体的な「特定のも
の」を表す
• すべてのインスタンスはクラスに属している
• インスタンスのことを「オブジェクト」と呼ぶ
こともある。
クラスを宣言する
• 新たなクラスを作ること→「クラスを宣言す
る」
• クラス名は大文字で始めるのが慣習
class クラス名 {
フィールドの宣言
メソッドの宣言
}
フィールド
• 情報を保存する場所を指す
• 「幅」「高さ」という2つの長方形の情報を持つ
クラス
class Rectangle {
int width:
int height;
}
• この時、widthやheightをフィールドと呼ぶ
• ここではまだクラス宣言しただけ
メソッド
• 情報を処理する方法
• 長方形を表すRectangleクラスに以下のメソッド
を追加する
▫ 幅と高さを設定する(setSize)
▫ 面積を計算する(getArea)
Rectangleクラス
class Rectangle {
int width;
int height;
void setSize(int w, int h) {
width = w;
height = h;
}
int getArea() {
return width * height;
}
}
インスタンスの作り方
• Rectangleクラスのインスタンスを作るには、
new演算子を使う

new Rectangle()
• newはjavaの予約語
• 作ったインスタンスをRectangle型として宣言し
た変数に代入する
Rectangle r = new Rectangle();
フィールドへのアクセス
Rectangle r = new Rectangle();
r.width = 123;
r.height = 45;
Rectangle型の変数r+「.(ドット)」+Rectangleク
ラスのフィールドwidth
• 「.(ドット)」は、日本語の「の」にあたる
メソッドの呼び出し
Rectangle r = new Rectangle();
r.setSize(123, 45);

• rのsetSizeメソッドを呼び出し、第1引数を123、
第2引数を45をせよ
• 「メソッドを呼び出すときに与える引数」のこ
とを実引数と言う
• 「メソッドの宣言に書かれた引数」のことを仮
引数と言う
Rectangleのコンストラクタ
public Rectangle(int w, int h) {
width = w;
height = h;
}
• メソッドと似ているが異なる点が2点
1. コンストラクタには戻り値の型がない(voidでもな
い)
2. コンストラクタの名前はクラス名と同じ

• コンストラクタの中から他のメソッド(setSize)を
呼び出してもよい
コンストラクタを呼び出す
Rectangle r = new Rectangle(123, 45);
• 幅123、高さ45のRectangleのインスタンスが生
成され、変数rに代入された
フィールドの初期化
• 単にフィールドを初期化するだけなら、コンス
トラクタの中で設定せずに、フィールド宣言の
ところに初期値を記述すればよい
int width = 10;
int height = 20;
クラスフィールドとは
• 「インスタンスに個別の番号をつけるにはどう
したらよいか?」
class Rectangle {
int number;
Rectangle() {
number = ...
}
}
• numberフィールドはどこにいる?
全インスタンス共通のどこかに情報を
保持しておくには?
• numberフィールドは、新たに作られたばかりの
インスタンスの中にあるフィールド
• つまり、自分以外のインスタンスがどれくらい
あるのかわからない
• 全体を俯瞰して見る場所が必要
▫ Javaではクラスフィールド(クラス変数、スタ
ティックフィールド)と呼ばれる宣言をすること
で、全インスタンス共通の情報を保持することが
出来る
クラスフィールドの宣言
class Rectangle {
static int counter = 0;
}
• 通常のインスタンスとは異なり、staticという修
飾子が付く
• staticは「静的な」という意味
クラスフィールドを使ってインスタン
スに番号をつける
class Rectangle {
...
static int counter = 0;
int number;
Rectangle() {
...
number = counter;
counter++;
}
}
クラスメソッドの宣言
• メソッドにもインスタンス同様staticを使ったクラ
スメソッドがある
• 「これまでに作られたRectangle インスタンスの個
数を得る」メソッドgetCounter
class Rectangle {
static int counter = 0;
...
static int getCounter() {
return counter;
}
}
クラスメソッド
• staticをメソッドに付けるとクラスメソッドにな
る
• クラスメソッドは特定のインスタンスと関連付
けられていない
• 「現在のインスタンス」thisを使うとコンパイ
ルエラー
• superを使ってもコンパイルエラー
• staticではないメソッドをインスタンスメソッド
と言う
クラスメソッドとインスタンスメソッ
ド
• GamePlayerクラスで「生きているプレイヤーの数」を
得るcountAlivePlayerはクラスメソッド。これに対して、
「現在のプレイヤーが生きているかどうか」を調べるの
isAliveメソッドはインスタンスメソッド
class GamePlayer {
....
static int countAlivePlayer() {
...
}
boolean isAlive() {
...
}
}
クラスメソッドの呼び出し
• クラスメソッドは特定のインスタンスに紐付か
ないので以下のようにアクセス出来る

• クラス名.メソッド名(引数列)
演習5
• Rectangleのインスタンスの内容が等しいかどう
かを調べるメソッドが必要になり、areSameメ
ソッドを作った。しかし、先生に見せたところ、
「引数を1つにした方がいい」と言われた。どう
すればよいか。
Rectangleクラス
class Rectangle {
...
// 2つのRectangleを比較して、等しかったらtrue,
// 等しくなかったらfalseを返す
boolean areSame(Rectangle a, Rectangle b) {
if (a == null || b == null) {
return false;
} else if (a.width == b.width && a.height == b.height) {
return true;
} else {
return false;
}
}
}
演習6
• これまでのRectangleクラスの宣言では、width
やheightの値がマイナスであるかどうかの
チェックが入っていない。ここで、widthと
heightがマイナスになるなら、強制的に0になる
ように既存のRectangleクラスを修正しなさい。
演習7
• これまでのRectangleクラスは、幅と高さを持つ
長方形だったが、これに「左上すみの位置」を
表すxとyというフィールドを追加し、以下のコ
ンストラクタやメソッドを宣言しなさい
1. フィールド
1. 指定がないときの幅と高さ
(INITIAL_WIDTH,INITIAL_HEIGHT)
演習7(続き)
2. コンストラクタ
1. 引数がないもの(width, heightの初期値は
INITIAL_WIDTH,INITIAL_HEIGHT,xとyは0)
2. width,heightだけを指定したもの(xとyは0)
3. x,y,width,heightを指定したもの
演習7(続き)
3. メソッド
1. 位置を指定するvoid setLocation(int x, int y)メソッ
ド
2. 大きさを指定するvoid setSize(int width, int
height)メソッド
3. [x, y, width, height]の形式で文字列として表現す
るtoStringメソッド
4. 長方形の「重なり部分」(これも長方形)を得る
intersect(Rectangle r)メソッド。ただし、重なり
がない場合はnullを返す。重なりがある場合は、
長方形として返す。
スーパークラスとサブクラス
• すでに存在するクラスをもとにして、新しいメ
ソッドやフィールドを追加したり、すでにある
メソッドを上書きしたりして、新しいクラスを
作ることが出来る → クラスの『拡張』
• クラスを拡張してできた新しいクラスを、もと
クラスのサブクラス、もとのクラスをスーパー
クラスと言う
スーパークラスとサブクラス
長方形

名前付き
長方形

Rectangle

NamedRectangle

NamedRectangleの
[スーパークラス]

Rectangleの
[サブクラス]
スーパークラスは1つ
• Javaでは2つ以上のクラスをスーパークラスにす
ることはできない
• スーパークラスは複数のサブクラスを作ること
が出来る
クラス階層
classA

classB

classE

classC

classF

classD

classG

classH
extendsでスーパークラスを指定
class NamedRectangle extends Rectangle {
}
• extendは『拡張する』という意味
Objectクラスとクラス階層
• すべてのクラスの共通の祖先はObjectクラス
• Objectクラスは、すべてのクラスの中で唯一
スーパークラスを持たない
• クラスは、スーパークラスを指定せずにクラス
宣言すると、自動的にObjectクラスのサブクラ
スとして宣言される
継承
• サブクラスはスーパークラスのフィールドとメ
ソッドを引き継ぐ。このことを継承と言う
フィールドの継承
• スーパークラスの持つフィールドをサブクラスで持つ
• NamedRectangleのインスタンスnrを介して、フィールドを参照・
代入することが出来る
• NamedRectangle.java
public class NamedRectangle extends Rectangle {
public static void main(String[] args) {
NamedRectangle nr = new NamedRectangle();
nr.width = 78;
nr.height = 910;
System.out.println(nr.width);
System.out.println(nr.height);
}
}
メソッドの継承
• NamedRectangleクラスはRectangleクラスのメソッドを
呼び出すことが出来る
public class NamedRectangle extends Rectangle {
public static void main(String[] args) {
NamedRectangle nr = new
NamedRectangle();
nr.setSize(78, 910);
System.out.println(nr.getArea());
}
}
コンストラクタは継承されない
• フィールドとメソッドは継承されるが、コンストラクタは継承され
ない
• NamedRectangle.java
public class NamedRectangle extends Rectangle {
String name;
NamedRectangle() {
name = "NO NAME";
}

}

NamedRectangle(String name) {
this.name = name;
}
コンストラクタの呼び出し
• 正しいコンストラクタの呼び出し
public static void main(String[] args) {
Rectangle r = new Rectangle();
Rectangle s = new Rectangle(123, 45);
NamedRectangle nr = new
NamedRectangle();
NamedRectangle ns = new
NamedRectangle("name");
}
コンストラクタの呼び出し
• NamedRectangleクラスにコンストラクタを定義
していないため、コンパイル時エラーとなる
NamedRectangle nr = new
NamedRectangle(67,890);
コンストラクタが継承されない理由
• コンストラクタがインスタンスの初期化を担っ
ているため

• 例えば
NamedRectangle nr = new
NamedRectangle(67,890);
が呼び出せたとすると、NamedRectangleクラス
のnameフィールドが初期化されないことになる
コンストラクタの自動的な呼び出し
• 先ほどのコンストラクタNamedRectangle()の中
では、フィールドnameは初期化されているが、
スーパークラスから継承されているwidth、
heightは初期化していない
• サブクラスのコンストラクタのはじめには、
スーパークラスの引数なしコンストラクタが自
動的に呼び出される
コンストラクタの自動的な呼び出し
• NamedRectangle.java
public class NamedRectangle extends Rectangle {
String name;
NamedRectangle() {
// ここ
name = "NO NAME";
}

}

NamedRectangle(String name) {
// ここ
this.name = name;
}
誰が何を挿入するのか?
• スーパークラスのコンストラクタの呼び出しを
自動に挿入するのは誰か?
▫ Javaのコンパイラの仕事

• 何が挿入されているのか?
▫ new Rectangle()では、現在初期化しようとするイ
ンスタンスとは別の新しいインスタンスが作られ
てしまう
▫ スーパークラスのコンストラクタの呼び出しに特
別な表記法が用意されている
super()
• スーパークラスのコンストラクタの明示的な呼
び出し
NamedRectangle() {
super(); // スーパークラスの引数なしコンスト
ラクタ
name = "NO NAME";
}

• スーパークラスの引数なしコンストラクタの呼
び出しは省略することが出来る
super()
• コンストラクタの中から、スーパークラスの引
数付きのコンストラクタを呼び出したい時
▫ NamedRectangle nr = new
NamedRectangle("name"); というインスタンスを
作る時、長方形の大きさをwidth=200,height=32
にしたい時は
NamedRectangle(String name) {
super(200, 32); // スーパークラスの引数
付きコンストラクタの呼び出し
this.name = name;
}
this()
• 自分のクラスのコンストラクタの明示的な呼び出しが出来る
public class NamedRectangle extends Rectangle {
String name;
NamedRectangle() {
this("NO NAME");
}

}

NamedRectangle(String name) {
super(56, 78);
this.name = name;
}
this()
• this("NO NAME");
▫ もう1つのコンストラクタNamedRectangle(String
name)を呼び出している

• this()を使うとコンストラクタがたくさん定義さ
れていても、初期化処理を共通化することが出
来る
演習1
• 次の機能をもつPlacedRectangleをRectangleの
サブクラスとして宣言しなさい。また、
Rectangleは次スライドに定義されている
▫ 位置を表すint型のフィールドx,yを持つ
▫ 3つのコンストラクタを持つ
1. 引数なし
2. 位置付き
3. 位置と大きさ付き

▫

位置を変更する(設定する)メソッドsetLocation
メソッドを持つ
Rectangle.java
class Rectangle {
int width;
int height;
public Rectangle() {
setSize(0, 0);
}

Rectangle(int w, int h) {
setSize(w, h);
}
void setSize(int w, int h) {
width = w;
height = h;
}
@Override
public String toString() {
return "[" + width + ", " + height + "]";
}
}
継承とIS-A関係
• サブクラスがスーパークラスの性質を受け継ぐ
▫ 『サブクラスはスーパークラスの一種である』
▫ 『○○は○○の一種である』→IS-A関係
classA

classB
classD
classC

classE
多重継承
• Javaでは多重継承はサポートしていないが、イ
ンタフェースという機能を使って擬似的に多重
継承を実現することが出来る
合成とHAS-A関係
• NamedRectangleクラスは、String型のフィール
ドを持っていた
▫ String型のインスタンスを自分の名前として持っ
ていた
▫ インスタンスをフィールドとして持つと、そのイ
ンスタンスを自分の物として扱うことが出来る
▫ このような関係をHAS-A関係という
継承の目的
• 親の財産を受け継ぐことができれば、子供はゼ
ロからスタートしなくてもよい
• クラスの継承も同じく、ゼロからではなく、既
存のクラスを拡張してプログラミングすれば時
間の効率化、バグ改修を少なくすることが出来
る
オーバーライド
• クラスは、スーパークラスのメソッドを継承す
るが、新たなメソッドを追加するだけでなく、
継承したフィールドやメソッドを変更すること
が出来る。このような変更をメソッドのオー
バーライドと言う
メソッドのオーバーライド
public class NamedRectangle extends Rectangle {
...

@Override
void setSize(int width, int height) {
...
}
}
メソッドのオーバーライド
NamedRectangle nr = new NamedRectangle();
// NamedRectangleのインスタンス生成
nr.setSize(56, 78);
// NamedRectangleのsetSizeメソッドの呼び
出し
親クラスのsetSizeメソッドは呼び出されない
シグニチャ
• メソッドをオーバーライドするには、サブクラ
スで『同じメソッド』を宣言する必要がある
• 『同じ』とは
▫ メソッドの名前が等しい
▫ 引数列の型が等しい

ことを意味する
• この『メソッド名と引数列の型』のことをメ
ソッドのシグニチャ(signature)と言う
• シグニチャとは『署名』という意味
@Override
• @から始まるものをアノテーションと言う
• 単なるコメントではなく、コンパイラも理解す
るコメント
• @Overrideの場合は、メソッド名の綴りミスな
どによるオーバーライドの失敗をコンパイラが
チェックしてくれる
演習2
• 演習1で作成したPlacedRectangleクラスに以下
のメソッドを追加しなさい
▫ 標準的な文字列表現を返すメソッドtoString
 x = 12, y = 34, width = 56, height = 78のとき、
[ (12, 34) [56, 78] ]
と表示されるようにすること
コントラクトは変更してはいけない
• あるクラスの『フィールドとメソッドが持つ意
味』をコントラクト(契約)という。
• オーバーライドしたメソッドを書き換えること
が可能だが、そのフィールドやメソッドの意味
(コントラクト)を変更してはいけない
オーバーライドとオーバーロード
• オーバーライドはスーパークラスのメソッドを
変更すること。オーバーライドは『命令を無効
にする』『決定を覆す』という意味。上書き宣
言。
• オーバーロードは同じ名前と異なる引数を持つ
メソッドを多数宣言すること。ロードは『負
荷』のこと。1つの名前にたくさんのメソッドと
いう荷物を背負わせている
多態性とオーバーライド
• サブクラスのインスタンスは、スーパークラス
のインスタンスとしてみなすことが出来る
NamedRectangle nr = new
NamedRectangle("name");
このとき、変数nrはRectangle型の変数に代入す
ることが出来る
Rectangle r = nr;
多態性とオーバーライド
• 犬のポチを『犬』としてではなく、『哺乳類』
として扱っている
• このように同じインスタンスが、変数nr経由で
はNamedRectangleとして扱われ、変数rでは
Rectangleとして扱われる
• このことをオブジェクト指向の用語では、オブ
ジェクトの多態性(ポリモルフィズム)と呼ぶ
多態性とフィールド
nr.name 名前が得られる
nr.width 幅が得られる
nr.height 高さが得られる
r.name コンパイルエラー(Rectangleにname
フィールドはない)
r.width 幅が得られる
r.height 高さが得られる
多態性とメソッド
r.setSize(56, 78);
• 通常は、RectangleのsetSizeメソッドが呼び出さ
れるが、NamedRectangleクラスにsetSizeメ
ソッドがあれば(オーバーライドされていれば)、
NamedRectangleクラスのsetSizeメソッドが
呼び出される
• 変数rはRectangle型だが、メソッド呼び出しで
実際に呼び出されるメソッドは、その時代入さ
れているインスタンスのクラスによって決まる
finalメソッドはオーバーライドできな
い
• finalが付いたメソッドはサブクラスにも継承さ
れるが、サブクラスでそのfinalメソッドを変更
すること(オーバーライドすること)は出来ない
継承とアクセス制御
• スーパークラスでprivateと書かれたフィールド
やメソッドはサブクラスに継承されない
▫ サブクラスからアクセスすることが出来ない

• このように、アクセスを許可したり禁止したり
する機構のことをアクセス制御と言う
privateフィールドとprivateメソッド
class Rectangle {
private int width;
private int height;
private void internalMethod(int width, int height) {
...
}
...
}
class NamedRectangle extends Rectangle {
...
void badMethod() {
width = 56;
height = 78;
System.out.println(height);
internalMethod(1, 2);
}
}

// コンパイルエラー
// コンパイルエラー
// コンパイルエラー
// コンパイルエラー
アクセスメソッド
• 一般的に、フィールドはprivateにすることが多
い →サブクラスによって不用意に変更される
ことを防ぐため
• フィールドをprivateにして、外から隠し(情報隠
蔽)、そのフィールドを参照/設定するメソッド
のことをアクセスメソッド、またはアクセサと
呼ぶ
アクセスメソッド
class Rectangle {
private int width;
private int height;
int getWidth() [
return width;
}
int getHeight() {
return height;
}
void setSize(int w, int h) {
this.width = w;
this.height = h;
}
}
class NamedRectangle extends Rectangle {
...
void goodMethod() {
setSize(56, 78);
System.out.println(getHeight());
}
}
クラスライブラリとパッケージ
• プログラミングに有用なクラスは、Java言語処
理系に数多く用意されている。このクラスの集
まりをクラスライブラリと呼ぶ
• 関連のあるクラスのいくつかを1つのグループに
まとめることも出来る。まとめられたグループ
をパッケージと言う
finalクラスと拡張の禁止
• クラスを宣言するとき、final修飾子を付けるとその
クラスの拡張は禁止される
final class MyClass {
...
}
• クラスを拡張すると、セキュリティ上問題がある場
合や、プログラムの整合性が崩れる可能性がある場
合にfinalクラスにする
• String、Integer、System、Mathクラスなどの
java.langパッケージのクラスはfinalクラス
抽象クラス
• メソッドの名前と引数の方だけが定まっていた、
その本体(実装)がないメソッドのことを抽象メ
ソッド(abstractメソッド)という
• 抽象メソッドを含んでいるクラスを抽象クラス
(abstractクラス)と呼ぶ。
• 抽象クラスはインスタンスを作ることができな
い
抽象クラス
abstract class Player {
public abstract void play();
public void loop(int n) {
for (int i = 0; i < n; i++) {
play();
}
}
}
playメソッドの実装
public class TextPlayer extends Player {
String text;
public TextPlayer(String text) {
this.text = text;
}
@Override
public void play() {
System.out.println(text);
}
public static void main(String[] args) {
TextPlayer player = new TextPlayer("こんにちは");
player.loop(3);
}
}
抽象クラスはサブクラスに期待する
• 抽象クラスは、自分で動作は規定しないけど、
どういうメソッドを宣言しなければならないか
をサブクラスに強要する
• 抽象クラスをうまく使うとサブクラスのメソッ
ド名が揃うため、読みやすいプログラムを書く
ことが出来る
Numberクラスの場合
抽象メソッド
intValue()
longValue()
byteValue()
doubleValue()
...

Object

Number

Integer

Long

Byte

Double

メソッド
intValue()
longValue()
byteValue()
doubleValue()
...

メソッド
intValue()
longValue()
byteValue()
doubleValue()
...

メソッド
intValue()
longValue()
byteValue()
doubleValue()
...

メソッド
intValue()
longValue()
byteValue()
doubleValue()
...
演習3
• PlacedRectangleをRectangleのサブクラスとし
てではなく、Rectangle型のインスタンス変数を
持つクラスとして宣言しなさい
演習4
• 以下のプログラムを実行するとき、どのように表示
されるか考えなさい
class A {
A() {

System.out.println("1:A()");

}
A(int x) {
System.out.println("2:A(int x)");
}

}
(続く)
演習4
public class B extends A {
B() {
System.out.println("3: B()");
}
B(int x) {
System.out.println("4: B(int x)");
}
B(String s) {

super(789);
System.out.println("5: B(String s)");
}
public static void main(String[] args) {
System.out.println("-----");
new A();
System.out.println("-----");
new B();
System.out.println("-----");
new A(123);
System.out.println("-----");
new B(456);
System.out.println("-----");
new B("test");
System.out.println("-----");
}
}
参考文献
• Java言語 プログラミングレッスン[第3版]下
▫ 結城浩[著]

Contenu connexe

Tendances

Design Sprint Process / デザインスプリントの実際のプロセスについて
Design Sprint Process / デザインスプリントの実際のプロセスについてDesign Sprint Process / デザインスプリントの実際のプロセスについて
Design Sprint Process / デザインスプリントの実際のプロセスについてTakaaki Umada
 
Parametric Interior Design with Biomorphism
Parametric Interior Design with BiomorphismParametric Interior Design with Biomorphism
Parametric Interior Design with BiomorphismVituo Zumu
 
実践リーンエンタープライズ(20161027)
実践リーンエンタープライズ(20161027)実践リーンエンタープライズ(20161027)
実践リーンエンタープライズ(20161027)Masanori Kado
 
Building Science 2 Final Project Report
Building Science 2 Final Project ReportBuilding Science 2 Final Project Report
Building Science 2 Final Project ReportKohSungJie
 
Portfolio design Arsitektur dan Interior Ivan Sofyan
Portfolio design Arsitektur dan Interior Ivan SofyanPortfolio design Arsitektur dan Interior Ivan Sofyan
Portfolio design Arsitektur dan Interior Ivan SofyanIvan_Sofyan_
 
Boston Symphony Orchestra Marketing Case
Boston Symphony Orchestra Marketing CaseBoston Symphony Orchestra Marketing Case
Boston Symphony Orchestra Marketing Caseraquelangelica12
 
スクラムによるOpsBear開発1-基本編
スクラムによるOpsBear開発1-基本編スクラムによるOpsBear開発1-基本編
スクラムによるOpsBear開発1-基本編光平 八代
 

Tendances (10)

latar belakang lp3a
latar belakang lp3a latar belakang lp3a
latar belakang lp3a
 
Design Sprint Process / デザインスプリントの実際のプロセスについて
Design Sprint Process / デザインスプリントの実際のプロセスについてDesign Sprint Process / デザインスプリントの実際のプロセスについて
Design Sprint Process / デザインスプリントの実際のプロセスについて
 
IAASB Webinar on Assurance on Sustainability Reporting
IAASB Webinar on Assurance on Sustainability ReportingIAASB Webinar on Assurance on Sustainability Reporting
IAASB Webinar on Assurance on Sustainability Reporting
 
Parametric Interior Design with Biomorphism
Parametric Interior Design with BiomorphismParametric Interior Design with Biomorphism
Parametric Interior Design with Biomorphism
 
実践リーンエンタープライズ(20161027)
実践リーンエンタープライズ(20161027)実践リーンエンタープライズ(20161027)
実践リーンエンタープライズ(20161027)
 
Building Science 2 Final Project Report
Building Science 2 Final Project ReportBuilding Science 2 Final Project Report
Building Science 2 Final Project Report
 
Portfolio design Arsitektur dan Interior Ivan Sofyan
Portfolio design Arsitektur dan Interior Ivan SofyanPortfolio design Arsitektur dan Interior Ivan Sofyan
Portfolio design Arsitektur dan Interior Ivan Sofyan
 
Boston Symphony Orchestra Marketing Case
Boston Symphony Orchestra Marketing CaseBoston Symphony Orchestra Marketing Case
Boston Symphony Orchestra Marketing Case
 
スクラムによるOpsBear開発1-基本編
スクラムによるOpsBear開発1-基本編スクラムによるOpsBear開発1-基本編
スクラムによるOpsBear開発1-基本編
 
Baja
BajaBaja
Baja
 

Similaire à Javaプログラミング入門【第5回】

pi-9. スーパークラス, サブクラス, 継承
pi-9. スーパークラス, サブクラス, 継承pi-9. スーパークラス, サブクラス, 継承
pi-9. スーパークラス, サブクラス, 継承kunihikokaneko1
 
基礎構文班22回目 試験対策もどき
基礎構文班22回目 試験対策もどき基礎構文班22回目 試験対策もどき
基礎構文班22回目 試験対策もどきXMLProJ2014
 
Javaプログラミング入門【第7回】
Javaプログラミング入門【第7回】Javaプログラミング入門【第7回】
Javaプログラミング入門【第7回】Yukiko Kato
 
Javaプログラミング入門【第4回】
Javaプログラミング入門【第4回】Javaプログラミング入門【第4回】
Javaプログラミング入門【第4回】Yukiko Kato
 
pi-13. 今までの総まとめ
pi-13. 今までの総まとめpi-13. 今までの総まとめ
pi-13. 今までの総まとめkunihikokaneko1
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexprGenya Murakami
 
Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うTatsumi Naganuma
 
Java8から17へ
Java8から17へJava8から17へ
Java8から17へonozaty
 
Javaセキュアコーディングセミナー東京第1回 講義
Javaセキュアコーディングセミナー東京第1回 講義Javaセキュアコーディングセミナー東京第1回 講義
Javaセキュアコーディングセミナー東京第1回 講義JPCERT Coordination Center
 

Similaire à Javaプログラミング入門【第5回】 (15)

pi-9. スーパークラス, サブクラス, 継承
pi-9. スーパークラス, サブクラス, 継承pi-9. スーパークラス, サブクラス, 継承
pi-9. スーパークラス, サブクラス, 継承
 
基礎構文班22回目 試験対策もどき
基礎構文班22回目 試験対策もどき基礎構文班22回目 試験対策もどき
基礎構文班22回目 試験対策もどき
 
Javaプログラミング入門【第7回】
Javaプログラミング入門【第7回】Javaプログラミング入門【第7回】
Javaプログラミング入門【第7回】
 
Java研修
Java研修Java研修
Java研修
 
第23回目
第23回目第23回目
第23回目
 
Javaプログラミング入門【第4回】
Javaプログラミング入門【第4回】Javaプログラミング入門【第4回】
Javaプログラミング入門【第4回】
 
pi-13. 今までの総まとめ
pi-13. 今までの総まとめpi-13. 今までの総まとめ
pi-13. 今までの総まとめ
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
 
Xtend の紹介
Xtend の紹介Xtend の紹介
Xtend の紹介
 
Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使う
 
Phantom Type in Scala
Phantom Type in ScalaPhantom Type in Scala
Phantom Type in Scala
 
Rubyメソッド探索
Rubyメソッド探索Rubyメソッド探索
Rubyメソッド探索
 
Java8から17へ
Java8から17へJava8から17へ
Java8から17へ
 
Javaセキュアコーディングセミナー東京第1回 講義
Javaセキュアコーディングセミナー東京第1回 講義Javaセキュアコーディングセミナー東京第1回 講義
Javaセキュアコーディングセミナー東京第1回 講義
 
Rpscala2011 0601
Rpscala2011 0601Rpscala2011 0601
Rpscala2011 0601
 

Plus de Yukiko Kato

Javaデザインパターン入門【第3回】
Javaデザインパターン入門【第3回】Javaデザインパターン入門【第3回】
Javaデザインパターン入門【第3回】Yukiko Kato
 
Javaデザインパターン入門【第2回】
Javaデザインパターン入門【第2回】Javaデザインパターン入門【第2回】
Javaデザインパターン入門【第2回】Yukiko Kato
 
Javaプログラミング入門【第9回】
Javaプログラミング入門【第9回】Javaプログラミング入門【第9回】
Javaプログラミング入門【第9回】Yukiko Kato
 
ネットワーク第9回
ネットワーク第9回ネットワーク第9回
ネットワーク第9回Yukiko Kato
 
Javaプログラミング入門【第8回】
Javaプログラミング入門【第8回】Javaプログラミング入門【第8回】
Javaプログラミング入門【第8回】Yukiko Kato
 
ネットワーク第8回目
ネットワーク第8回目ネットワーク第8回目
ネットワーク第8回目Yukiko Kato
 
ネットワーク第7回
ネットワーク第7回ネットワーク第7回
ネットワーク第7回Yukiko Kato
 
[PS11]ネットワーク第6回
[PS11]ネットワーク第6回[PS11]ネットワーク第6回
[PS11]ネットワーク第6回Yukiko Kato
 
Javaプログラミング入門【第6回】
Javaプログラミング入門【第6回】Javaプログラミング入門【第6回】
Javaプログラミング入門【第6回】Yukiko Kato
 
ネットワーク第6回
ネットワーク第6回ネットワーク第6回
ネットワーク第6回Yukiko Kato
 
ネットワーク第5回
ネットワーク第5回ネットワーク第5回
ネットワーク第5回Yukiko Kato
 
[PS11]ネットワーク第5回
[PS11]ネットワーク第5回[PS11]ネットワーク第5回
[PS11]ネットワーク第5回Yukiko Kato
 
[Ps11]ネットワーク第4回
[Ps11]ネットワーク第4回[Ps11]ネットワーク第4回
[Ps11]ネットワーク第4回Yukiko Kato
 
ネットワーク第4回目
ネットワーク第4回目ネットワーク第4回目
ネットワーク第4回目Yukiko Kato
 
Javaプログラミング入門【第3回】
Javaプログラミング入門【第3回】Javaプログラミング入門【第3回】
Javaプログラミング入門【第3回】Yukiko Kato
 
ネットワーク第3回目
ネットワーク第3回目ネットワーク第3回目
ネットワーク第3回目Yukiko Kato
 
Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】Yukiko Kato
 
HTTPとは(HerokuとADTで実践編)
HTTPとは(HerokuとADTで実践編)HTTPとは(HerokuとADTで実践編)
HTTPとは(HerokuとADTで実践編)Yukiko Kato
 
Javaプログラミング入門【第1回】
Javaプログラミング入門【第1回】Javaプログラミング入門【第1回】
Javaプログラミング入門【第1回】Yukiko Kato
 
ネットワーク第2回目
ネットワーク第2回目ネットワーク第2回目
ネットワーク第2回目Yukiko Kato
 

Plus de Yukiko Kato (20)

Javaデザインパターン入門【第3回】
Javaデザインパターン入門【第3回】Javaデザインパターン入門【第3回】
Javaデザインパターン入門【第3回】
 
Javaデザインパターン入門【第2回】
Javaデザインパターン入門【第2回】Javaデザインパターン入門【第2回】
Javaデザインパターン入門【第2回】
 
Javaプログラミング入門【第9回】
Javaプログラミング入門【第9回】Javaプログラミング入門【第9回】
Javaプログラミング入門【第9回】
 
ネットワーク第9回
ネットワーク第9回ネットワーク第9回
ネットワーク第9回
 
Javaプログラミング入門【第8回】
Javaプログラミング入門【第8回】Javaプログラミング入門【第8回】
Javaプログラミング入門【第8回】
 
ネットワーク第8回目
ネットワーク第8回目ネットワーク第8回目
ネットワーク第8回目
 
ネットワーク第7回
ネットワーク第7回ネットワーク第7回
ネットワーク第7回
 
[PS11]ネットワーク第6回
[PS11]ネットワーク第6回[PS11]ネットワーク第6回
[PS11]ネットワーク第6回
 
Javaプログラミング入門【第6回】
Javaプログラミング入門【第6回】Javaプログラミング入門【第6回】
Javaプログラミング入門【第6回】
 
ネットワーク第6回
ネットワーク第6回ネットワーク第6回
ネットワーク第6回
 
ネットワーク第5回
ネットワーク第5回ネットワーク第5回
ネットワーク第5回
 
[PS11]ネットワーク第5回
[PS11]ネットワーク第5回[PS11]ネットワーク第5回
[PS11]ネットワーク第5回
 
[Ps11]ネットワーク第4回
[Ps11]ネットワーク第4回[Ps11]ネットワーク第4回
[Ps11]ネットワーク第4回
 
ネットワーク第4回目
ネットワーク第4回目ネットワーク第4回目
ネットワーク第4回目
 
Javaプログラミング入門【第3回】
Javaプログラミング入門【第3回】Javaプログラミング入門【第3回】
Javaプログラミング入門【第3回】
 
ネットワーク第3回目
ネットワーク第3回目ネットワーク第3回目
ネットワーク第3回目
 
Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】Javaプログラミング入門【第2回】
Javaプログラミング入門【第2回】
 
HTTPとは(HerokuとADTで実践編)
HTTPとは(HerokuとADTで実践編)HTTPとは(HerokuとADTで実践編)
HTTPとは(HerokuとADTで実践編)
 
Javaプログラミング入門【第1回】
Javaプログラミング入門【第1回】Javaプログラミング入門【第1回】
Javaプログラミング入門【第1回】
 
ネットワーク第2回目
ネットワーク第2回目ネットワーク第2回目
ネットワーク第2回目
 

Javaプログラミング入門【第5回】