• 検索結果がありません。

K227 Java 2

N/A
N/A
Protected

Academic year: 2021

シェア "K227 Java 2"

Copied!
152
0
0

読み込み中.... (全文を見る)

全文

(1)

Javaの資料

知識科学教育研究センター 

金井 秀明

(2)

内容

K227の資料です.

高橋「やさしい

Java」の基づいてま

す.

(3)

実習の準備#1

電算室のPCにloginする.

ユーザ名:  各自のユーザアカウント パスワード: 各自のパスワード

サーバへリモートデスクトップ接続する.

コンピュータ名:ts-ksc-0.jaist.ac.jp

(4)

実習の準備#2

(5)
(6)

Java言語

プログラミング言語の1つ

1995年Sun Microsystemsが発表

特徴

オブジェクト指向言語

マルチプラットフォーム(Write once, run anywhere)

(7)

Javaの実行の流れ

Javaソー スコード バイトコード コンパイラ javac インタプリタ java 実行

(8)

Javaソースコード

ソースコード:テキスト形式のプログラム

例)ファイル名:Sample1.java

class Sample1 {

public static void main (String args[])

{

System.out.println(”ようこそJavaへ!”);

(9)

コンパイル

コンパイル:ソースコードをバイトコード

に変換すること.

コンパイラー:コンパイルするためのソフ

トウェア(javac)

例)Sample1.javaをコンパイルする.

(10)

コンパイルの後

コンパイル後に生成されるファイルのこ

とを「クラスファイル」とよぶ.

例)Sample1.javaをコンパイルした後

Sample1.classというファイルが生成され る.

(11)

プログラムの実行

例)Sample1.javaを実行する.

例)Sample1.javaの実行結果

(12)

実習の準備#1

電算室のPCにloginする.

ユーザ名:  各自のユーザアカウント パスワード: 各自のパスワード

(13)

実習の準備 #2

Javaコードの編集

エディタ(ワードパッド,メモ帳など)を使う

Javaコードのコンパイル&実行

(14)

実習の準備#3

Java環境(コンパイラなど)の整備

Java環境のDownload 環境変数「PATH」の設定(例えば) 環境変数「CLASSPATH」の設定(場合によって) C:¥Program Files¥Java¥jdk1.5.0_06¥bin; http://java.sun.com/j2se/1.5.0/ja/download.html .;

(15)
(16)

// 画面に文字を出力するコード class Sample1

{

public static void main (String args[]) {

 System.out.println(”ようこそJavaへ!”);

 System.out.println(”Javaをはじめましょう”);  }

(17)

コードの要素

クラス名「Smaple1」:プログラムグロック

の基本単位,ファイル名

main()メソッド:プログラムの処理が始まる

「{ }」で囲まれた部分:ブロック

文:1つの処理の単位,文の最後は「;」で

終わる.

(18)
(19)

リテラル

Javaのコードないで,特定の文字や数値の

表記のこと.

いわゆる,定数のこと

種類

文字リテラル: a   か 文字列リテラル: JAIST 金井

(20)

例題

以下のように,画面上に表示するプロ

グラムを作成する.

(21)
(22)

変数とは?

文字列や数値を保存するための場所

何かを入れておく「箱」のようなもの

その箱に対する操作

箱を作る(変数宣言) 箱に値を入れる(代入)

(23)

箱を作る:変数宣言

箱に名前をつける

英数字,「_」等 Javaの予約語は使っては駄目(class return...) 数字で始まっては駄目

箱の種類(大きさ)を指定する

(24)

箱の種類:変数の型

型 記憶できる値の範囲 整数 byte 1バイト(-27∼+27-1) short 2バイト(-215∼+215-1) int 4バイト(-231∼+231-1) long 8バイト(-263∼+263-1) 浮動小数点 float 4バイト単精度浮動小数点 double 8バイト倍精度浮動小数点 文字 char 2バイト文字データ(1文字)

(25)

Javaでの変数宣言

文法

例:

型名 変数名; 型名 変数名1, 変数名2, , ; int number; char c;

(26)

箱に値を入れる:代入

文法

例:

変数名=式; number = 10; c = ‘金’; f1 = 1.41;

(27)

変数宣言かつ代入:

変数の初期化

文法

例:

型 変数名=式; 型 変数名1=式1, ...,変数名n=式n; int number = 10;

(28)

箱の値を見る:参照

文法

例:

変数名 int number = 10; System.out.println(number);

(29)

その他の操作

変数の値の変更する

他の変数の値を代入する

double f1 = 3.14, f2=0.9; int number = 10; System.out.println(number); number = 30; System.out.println(number);

(30)

型変換:1

大きなサイズの型の変数に,小さなサイ

ズの型の値を代入する場合:

例:

自動的に,型変換が行われる.

int num = 10; double d = num; System.out.println(num); System.out.println(d); 10 10.0

(31)

型変換:2

小さなサイズの型の変数に,大きなサイ

ズの型の値を代入する場合:

例:

明示的に,型変換の操作(キャスト)を

書いておく

double pi = 3.14;

(32)

型変換:まとめ

キャストする

(33)
(34)

Javaにおける「式」

演算子とオペランドの組合わせ.

演算子(operator):演算するもの オペランド(operand):演算対象

例:

1 + 2 オペランド オペランド 演算子

(35)

「式」の評価

式を計算すること.

ただし,ここでの「計算」は,算術演算だ 1 + 2 3 評価

(36)

演算子:1

算術演算子

加算(+),減算(ー),乗算(*),除 算(/),剰余算(%),インクリメント (++),デクリメント(ーー)

代入演算子:=

代入演算子のバリエーション:+=,ー =,*=,/=,...

(37)

算術演算での注意

異なる型どうしの演算では,

例:

一方のオペランドを大きなサイズの型に

変換してから演算を行う.

int d = 2; double pi = 3.14; 6.28

(38)

練習1

半径10センチの円周と円の面積を求める

プログラムを作成する.

円周=2*半径*円周率 円の面積=半径*半径*円周率 円周率=3.14

(39)

練習2

次のプログラムの実行結果を示せ

public class rensyu2 {

public static void main(String args[]) {

System.out.println(5/2*3);

System.out.println(5/2*3.0);

System.out.println(5.0/2*3);

System.out.println(5/2.0*3);

(40)

演算子:2

関係(比較)演算子

等価(==),不等価(!=),より大き い(>),より小さい(<),以上(= >),以下(<=)

論理(条件)演算子

論理積(&&),論理和(||),NOT (!)

ビット演算子

(41)

補足:演算子1

インクリメント・デクリメント演算子

演算子 使用例 説明 ++ i ++ 変数iの値を返してから,1を加算する ++i 変数iに1を加算し,その値を返す --i-- 変数iの値を返してから,1減算する --i 変数iから1を減算し,その値を返す

(42)

補足:演算子2

複合代入演算子

演算子 使用例 等価な式 += a += 2 a = a + 2 -= a -= 3 a = a - 3 *= a *= 2 a = a * 2 /= a /= 10 a = a / 10 %= a %= 5 a = a % 5

(43)
(44)

キーボードからの入力

import java.io.*;

public class クラス名 {

public static void main(String args[]) throws IOException {

...

BufferedReader br =

new BufferedReader(new InputStreamReader(System.in));

String str = br.readLine();

System.out.println(str +”が入力されました.”);

(45)

練習3

次のように画面上に出力するプログラ

ムを記述せよ.

What is your name ? Hideaki

(46)

整数の入力

import java.io.*;

public class クラス名 {

public static void main(String args[]) throws IOException {

...

BufferedReader br =

new BufferedReader(new InputStreamReader(System.in));

String str = br.readLine();

int num =Integer.parseInt(str);

System.out.println(num +”が入力されました.”);

(47)

文字列を他の型に変換

文字列をint型に変換

文字列をdouble型に変換

int num = Interger.parseInt(str);

(48)

練習4

半径rをキーボードから入力し,その円周

と円の面積を求めるプログラムを作成す

る.

円周=2*半径*円周率 円の面積=半径*半径*円周率 円周率=3.14

(49)

2つ以上の入力

import java.io.*;

class test1 {

public static void main(String args[]) throws IOException {

...

BufferedReader br =

new BufferedReader(new InputStreamReader(System.in));

String str1 = br.readLine();

String str2 = br.readLine();

System.out.println(“最初に”+str1+”が入力されました.”);

(50)

練習5

台形の面積を求めるプログラムを作成する.

(51)

プログラムの基礎構造

順次構造:

記述した順番に処理が実行される構造

選択構造:

特定の状況に応じて,特定の処理が実行さ れる構造

反復構造

(52)
(53)

選択構造

特定の状況に応じて,特定の処理が実

行される.

その状況の記述=条件文

例:試験の点数が60点未満の場合 YES(真, true):落第する. NO (偽, false):合格する. 処理1 条件 処理2 YES NO

(54)

条件文

条件記述には,「関係演算子」,「論

理演算子」が使われる.

評価 > 点数 60 true 評価 < 点数 60 false

(55)

演算子:2

関係(比較)演算子

等価(==),不等価(!=),より大き い(>),より小さい(<),以上(= >),以下(<=)

論理(条件)演算子

論理積(&&),論理和(||),NOT

(56)

関係演算子

演算子 式がtrueとなる場合 ==  左辺と右辺が等しい !=  左辺と右辺が等しくない >  左辺が右辺より大きい >=  左辺が右辺より大きいか等しい <  左辺が右辺より小さい <=  左辺が右辺より小さいか等しい

(57)

if文

1つの文を処理する場合

複数の文を処理する場合

if(条件) { � 文; } if(条件) { 文1; 文2; 条件 文1 false true 条件 文 false true

(58)

if∼else文

ifの条件が偽(false)のときにも,何

らかの処理をしたいとき.

if(条件) { 文1; } else { 文2; } if(条件) { 文1; � ... } else { 文2; ... 条件 文1 false true ... 文2 ...

(59)

if∼else if ∼else

2つ以上の条件を判

定させ,処理をし

たいとき.

if(条件1) { 文1; � ... } else if (条件2) { 文2; ... } ... else { 条件2 文2 false 文 false 条件1 true 文1 true

(60)

複雑な条件判断

論理積 (&&):(条件1)かつ(条件2)

天気が晴れ,かつ,時間があれば,       ーー>外に遊びに行く

論理和 (¦¦):(条件1)または(条件2)

天気が晴れ,または,時間があれば,     ーー>外に遊びに行く

(61)

論理演算子

演算子 条件がtrueとなる場合

&&  左辺と右辺がともにtrueの場合

||  左辺と右辺のどちらかがtrueの場合

!  右辺がfalseの場合

if (num !=1 && num != 2){}

if (num ==1 || num ==2 || num =3) {} if (!(num ==1)) {}

(62)

switch文

選択肢から1つを選んで実行する.

値は数値,文字.

if文と同じことができる.

switch(式) { case 値1: � 文1 break; case 値2: 文2 break; default: 文; case2 文2 false 文 false case1 true 文1 true default: break: break:

(63)
(64)

繰返し処理

for

while

do∼while

処理の流れを変更する文

break

(65)

for文

for (初期式; 条件式; 変化のための式) { � 文; � ... } 条件 文 false true for

(66)

forの例

class test {

� public static void main(String args[]) {

� for (int i = 1; i < 4; i++) {

� System.out.println(i); } } } 1 2

(67)

for文のネスト

for (初期式1; 条件式1; 変化のための式1) { � ... for (初期式2; 条件式2; 変化のための式2) { � ... � } }

for (int i = 0; i < 3; i++) {

� for (int j = 1; j < 3; j++) {

(68)

while文

条件がtrueである

限り,文を繰り返

し処理する.

while(条件) { 文; ... } 条件 文 false true while

(69)

for文とwhile文:1

条件 文 false true while 条件 文 false true for

for文

while文

(70)

for文とwhile文:2

for文

while文

int i=1; while (i < 4) { � System.out.println(i); � i++; }

for(int i=1; i<4; i++) {

� System.out.println(i);

(71)

do∼while文

条件を判断する前

に,文の処理が行

われる.

最低1回

は文の処理が行わ

れる.

do { � 文; ... } while(条件); int i=1; do { � System.out.println(i);

(72)

whileとdo∼while:1

条件 文 false true while

while文

do∼while文

条件 false true while 文 do

(73)

whileとdo∼while:2

int i=1; do { � System.out.println(i); � i++;

while文

int i=1; while (i < 4) { � System.out.println(i); � i++; }

do∼while文

(74)

break文

処理の流れを強制終了し,ブロックから抜

ける.

int i=1; while (true) { � if (i == 4) break; � System.out.println(i); � i++;

(75)

continue文

繰り返しの内の処理をスキップし,ブ

ロックの最初に戻り,次の処理を続け

る.

for (i = 1; i < 4; i++) { � if (i == 2) continue; � System.out.println(i);

(76)
(77)

配列とは?

変数に整理番号を付けて並べたもの.

変数の「箱」の列

同じ型の値を複数まとめて記憶する.

配列にまつわる操作

配列の宣言 配列の要素の確保 変数 A

(78)

復習:変数とは?

文字列や数値を保存するための場所

何かを入れておく「箱」のようなもの

その箱に対する操作

箱を作る(変数宣言) 箱に値を入れる(代入)

(79)

復習:変数のときは

変数を作る(宣言)

int i;

変数に入れる(代入・初期化)

i = 1;

変数の中身を見る(参照)

(80)

配列の宣言等

配列の宣言:箱の種類を指定する

型名 配列変数名[];

int ten[]; or int [] ten;

要素の確保:箱の数を指定する

配列変数名 = new 型名 [要素数]; ten = new int[3];

(81)

配列の宣言等

配列の宣言と要素の確保:箱の種類とそ

の数を指定する.

型名 配列変数名[] = new 型名[要素数]; int ten[] = new int[4];

(82)

配列の要素に代入

配列変数名[添字] = 式; ten[0] = 90; ten[1] = 80; ten[2] = 70; ten[3] = 60; ten[0] 90 ten[1] 80 ten[2] 70 ten[3] 60

(83)

配列の宣言等

配列の宣言,要素の確保,値の代入

型名 配列変数名[] = {値1, 値2, ...} int ten[] ={90, 80, 70, 60};

(84)

配列の要素の参照

配列変数名[添字] ten[2];

(85)

配列の要素と変数の比較

int[]型の変数 int型の変数

宣言 int ten[]; or int [] ten; int i, j, k;

確保 ten = new int[3]; 不要

代入 ten[0] = 90; ten[1] = 80; ten[2] = 70; i = 90; j = 80; k = 70; System.out.println(ten[0]); System.out.println(i);

(86)

多次元配列

1次元配列:一列の箱

多次元配列:2次元以上に箱が並ぶ

2次元配列:表のイメージ 3次元配列:立体のイメージ (X軸, Y軸, Z軸) 1次元配列 2次元配列

ten[0][0] ten[0][1] ten[0][2] ten[1][0] ten[2][0] ten[1][1] ten[2][1] ten[1][2] ten[2][2]

(87)

多次元配列の準備

宣言

型名 配列変数名[][]; int ten[][];

要素の確保

配列変数名 = new 型名[要素数][要素数]; ten[][] = new int[3][3];

(88)

値の代入と参照

値の代入

値の参照

ten[0][1]; ten[1][2]; int ten[][] = {{90, 80, 70}, {20, 40, 80}. {40, 30, 80}};

(89)

配列の長さ

配列変数名.length

例:1次元配列

int a[] = {10, 20, 30} a.lengthは3

例:2次元配列

int ten[3][2] ten[0][0] ten[0][1] ten[1][0] ten[1][1]

(90)

補足

要素数が一定でない配列

ten.lengthは3 ten[0].lengthは3 ten[1].lengthは2 ten[2].lengthは1

ten[0][0] ten[0][1] ten[0][2] ten[1][0]

ten[2][0]

(91)
(92)

オブジェクト指向

Javaはオブジェクト指向言語

オブジェクト指向:オブジェクトをプ

ログラミングの中心に置き,オブジェ

クトを記述すること.

従来の手続き型言語:手続きをプログ

ラミングの中心に置き....

(93)

クラスとオブジェクト

クラス:同じ特性

をもつモノの集合

に名前を付けたも

の.オブジェクト

の特性を抽象化し

たもの.

オブジェクト(イ

(94)

フィールドとメソッド

フィールド:クラスの「性質」(属性)

(それは何か?)

メソッド:クラスの「機能」,操作,手

続き.(それをどうするのか?)

(95)

クラス「科目」の例

フィールド:科目名,成績,...

オブジェクト(インスタンス):

「Javaプログラミング,80点」

メソッド:科目名や成績を表示する

(toStringメソッド)

(96)

クラスの宣言

class クラス名 { � 型名  フィールド名1; � 型名  フィールド名2; ...; � 戻り値型名  メソッド名(引数リスト) { � ...; � } � ...; }

(97)

クラス「Car」の例

class Car { � int num; // ナンバープレート番号 � double gas; //ガソリン量 }�

(98)

オブジェクトの作成

オブジェクトを扱う変数を宣言する.

オブジェクトを作成し,その変数を扱え

るようにする.

Car car1;

car1 = new Car();

クラス名 変数名 クラス名 変数名= new クラス名

(99)

フィールドの参照

オブジェクトをさす変数名.フィールド名

Car car1 = new Car(); Car car2 = new Car();

car1.num = 1234; car1.gas = 20.5; car2.num = 2344; car2.gas = 100.5;

System.out.println(car1.num+ + car1.gas); System.out.println(car2.num + + car2.gas);

(100)

メソッド

class クラス名 { � 型名  フィールド名1; � 型名  フィールド名2; � ...; � 戻り値型名  メソッド名(引数リスト) { � ...; � } � ...; }

(101)

メソッドの例

「車クラスのフィールド値を出力する」

class Car { � int num; // ナンバープレート番号 � double gas; //ガソリン量 � � void show() { � System.out.println( ナンバーは +num); � System.out.println( ガソリン量は +num);

(102)

メソッドの呼び出し

Car car1 = new Car(); Car car2 = new Car();

car1.num = 1234; car1.gas = 20.5; car2.num = 2344; car2.gas = 100.5; car1.show();

(103)

メソッドの引数

引数:メソッドに何らかの情報(値)を

渡すとき使う.その情報のこと.

class Car {

int num; double gas; void setNum(int n) {

� num =n;

� }

class test {

public static void main(...

� int number = 2344;

� Car car1 = new Car();

� Car car2 = new Car();

� car1.setNum(1234);

(104)

メソッドの戻り値

戻り値:メソッドから返される情報(値)

戻り値型名  メソッド名(引数リスト) { � ...; � return 式; } int getNum() { � System.out.println( ナンバーの値を戻す ); � return num; }

(105)
(106)

カプセル化

フィールドとメソッド

を一体化してクラスを

定義し,クラス内の細

かい仕様や構造を外部

から隠す.

クラス外からは許可さ

れた方法でしかフィー

(107)

カプセル化の利点

オブジェクト内部の仕様の変更が外のプロ

グラム対して影響しなくなる.

保守性が高まりプログラムの再利用が簡単

に行えるようになる.

(108)

メンバへのアクセス制限

private:クラスの外からアクセスできない

public:クラスの外からアクセスできる

フィールド       メソッド        privateメンバ       publicメンバ

(109)

メソッドのオーバーロード

同じメソッド名で複数のメソッドを宣言

できる.(多重定義)

各メソッドの引数の型と個数を異なるよ

うに定義する必要がある.

例:Carクラスに値を代入するメソッド

setCar (int n) //ナンバーの値を代入 setCar(double g) //ガソリン量の値を代入

(110)

コンストラクタ

クラスのオブジェクトが作成されたと

きに,オブジェクトの初期化をする仕

組み.

普通,オブジェクトのメンバに自動的

に初期値を設定するために使われる.

ただし,コンストラクタを省略しても,引 数のないデフォルトコンストラクタが自動

(111)

コンストラクタ

メソッドとの相違点

コンストラクタには戻り 型がない. コンストラクタの名前は クラス名と同じ.

メソッド同様オーバー

class Car {

� private int num;

� ...; � public Car() { � ...; � } � public Car(int ...) { � ...; � }

(112)

インスタンス変数とクラス変数

インスタンス変数(インスタンス

フィールド)

通常のフィールド

クラス変数(クラスフィールド)

static という修飾子が変数宣言につく

(113)

インスタンス変数とクラス変数

インスタンス変数 (インスタンスフィールド) オブジェクト(インスタン ス)ごとに,情報を保持 クラス変数 (クラスフィールド) クラス全体でその情報を保持

(114)

クラスメソッド

static という修飾子がつけられる.

クラスメソッド内では,thisは使えな

い.

(115)
(116)

クラスライブラリ

ある特定の機能を持ったプログラムを,

クラスとして部品化,関連する複数のク

ラスを1つのファイルにまとめたもの.

Javaでは,たくさんのクラスが用意さ

れている.

http://java.sun.com/j2se/1.5.0/ja/docs/

(117)

クラスライブラリの例

Stringクラス(文字列を扱う)

Mathクラス(数学的な計算を扱う)

...

(118)

クラス型変数

car1とcar2は同じオブジェクトをさし

ている.

car1のフィールドの値を変更すると,car2の 対応するフィールドの値も変更される.

変数の場合は異なるものをさしている.

Car car1 = new Car(); Car car2;

int i = 10; int ii;

(119)

オブジェクトの配列

複数のオブジェクトをまとめて扱うため

につかう.

配列を準備

オブジェクトを作成し,その配列の要素に代入 int test[]= new int[5];

test[0]=80;

Car cars[]=new Car[3] cars[1]= new Car();

(120)
(121)

内容

継承

メンバーへのアクセス

オーバーライド

(122)

継承

あるクラスの属性(データ)と機能(メ

ソッド)を土台にして,新しいクラスを作

ること.

土台となるクラス=スーパ(親)クラス 新しいクラス=サブ(子)クラス

Javaでは,単一継承だけ

(123)

クラスの継承

class サブクラス名 extends スーパークラス名{ � 型名  フィールド名1; � ...; � 戻り値型名  メソッド名(引数リスト) { � ...; � } � ...; }

(124)

継承の例:属性

class Car {

� int num; // ナンバープレート番号

� double gas; //ガソリン量

}�

class RacingCar extends Car {

� int course; // コース番号

スーパークラス「Car」

(125)

サブクラスのオブジェクトの作成

いままでのオブジェクトの作成と同じ.

オブジェクトを作成し,その変数を扱え

るようにする.

RacingCar rccar1; クラス名 変数名 変数名= new クラス名 クラス名 変数名= new クラス名 RacingCar rccar1

(126)

サブクラスのオブジェクトの作成

最初に,スーパクラスのコンストラク

タが自動的に呼び出される.

指定しない:

引数なしのコンストラクタが呼び出される.

指定:

super(引数リスト)より,呼び出すコンス トラクタを指定できる.

(127)

サブクラスのオブジェクトの作成

どのコンストラクタを使うか指定がな

いとき:

最初に,「スーパクラスの引数なしのコンス トラクタ」を呼び出す.

指定:

super(引数リスト) によって,どのコン ストラクタを呼び出すか指定できる.

(128)

メンバへのアクセス

private:

同一クラス内からのアクセスのみ可能

protected:

同一クラス内,そのサブクラスからのアクセ スが可能

(129)

メッソドのオーバーライド

スーパークラスで定義されたメソッド

と「同じメソッド名・引数の数・型」

をもつメソッドをサブクラスで定義で

きる.

サブクラスのオブジェクでメソッドを

呼び出すと,サブクラスのメソッドが

(130)

superとthis

super

サブクラスからスーパークラスの{変数,メ ソッド,コンストラクタ}にアクセするとき

this

同一クラスの{変数,メソッドコンストラク タ}にアクセするとき.

(131)

super

super.変数名 

スーパークラスの変数へアクセスする方法

スーパークラスのメソッドにアクセスする方法

super.メソッド名 

スーパークラスのコンストラクタにアクセスする

方法

(132)

this

this.変数名 

自クラスの変数へアクセスする方法

自クラスのメソッドにアクセスする方法

this.メソッド名 

自クラスのコンストラクタにアクセスする方法

(133)

finalキーワード

finalでメソッドを修飾すると

そのサブクラスからオーバーライドできな い.

finalでクラスを修飾すると

そのクラスを継承できない

finalでフィールドを修飾すると

(134)

Objectクラスの継承

Objectクラスはすべてのクラスのスー

パークラス

主なメソッド

String toString()

(135)
(136)

12章インタフェース

抽象クラス

多重継承

(137)

抽象クラス

#1

ある共通の性質/特性をもつクラスを

まとめる.

抽象クラス「ほ乳類」(乳を飲ませて子を 育てる).サブクラス「クジラ」, 「犬」.. 「犬」:母親が添い寝をしながら,乳を飲 ませる.

(138)

抽象クラス#2

概念としてのみ存在するクラス

abstractでクラスを修飾:抽象クラス

オブジェクトを作成できないクラス

abstractでメソッドを修飾

処理内容が定義されていないメソッドを持って いる.(抽象メソッド)

abstractで変数を修飾できない

(139)

抽象クラス

Vehicle Car Plane 抽象メソッド Show() メソッドsetSpeed(int) Planeクラスで定義した Show()メソッドが実行 Carクラスで定義した Show()メソッドが実

(140)

抽象クラスの宣言

abstract class クラス名 { � フィールド宣言 � メソッド宣言 � abstract 戻り値の型 メソッド名(引数名); � .... }

(141)

抽象クラスでない場合

Vehicle Car Plane 親クラスで定義したShow() Planeクラスでは,親ク Carクラスでオーバラ

(142)

instanceof 演算子

あるオブジェクトがどのクラスを元に

生成されたのかが知りたいときに使

う.

(143)

例:instanceof

class A { //super-class } class AA extends A { //sub-class } class test_instance_of {

public static void main(String args[]) {

� A objA = new A(); AA objAA = new AA();

� System.out.println(objAA instanceof A);

(144)

インタフェース

フィールドは必ず「定数」

メソッドは必ず「抽象メソッド」(実装

の記述はない)

オブジェクトは作れない

継承あり

(145)

インタフェースの宣言

interface インタフェース名 � extends スーパーインタフェース名1, … { � 型名 フィールド = 式(定数); � ... � 戻り値の型 メソッド名(引数名); � .... }

(146)

インタフェースの実装

インタフェースを利用するためには,

「implements」を使い,そのクラで

は,インタフェースのメソッドを実装

する.

(147)

例:implements

interface MyIF {

� int num = 100;

� void mymethod();

}

class MyClass implements MyIF {

� public void mymethod() {

� System.out.println( num = + MyIF.num);

(148)

クラスとインタフェース

クラス インタフェース

オブジェクト できる できない

メソッド いろいろ 必ずabstract

フィールド いろいろ 必ずpublic static final

スーパクラス 1つだけ 持てない

スーパインタ 複数可能

(149)

多重継承

多重継承:2つ以上のクラスを継承す

ること.

Javaの継承「extends」では多重継承

は認めていない.

ただし,interfaceを使うことで,擬

似的に多重継承を行うことができる.

(150)

多重継承の実装

class クラス名 implements インタフェース名1, インタフェース名2, … { � ...; } インタフェース1 インタフェース2 クラス

(151)

多重継承の例

Car

iVehicle iMaterial

抽象メソッドmShow() 抽象メソッドvShow()

(152)

例:インタフェース

interface MyIF { � int num = 100; � void mymethod(); } interface MyIF1 {} interface MyIF2{}

interface MyIF extends MyIF1, MyIF2 { }

参照

関連したドキュメント

子どもが、例えば、あるものを作りたい、という願いを形成し実現しようとする。子どもは、そ

このように雪形の名称には特徴がありますが、その形や大きさは同じ名前で

パスワード 設定変更時にパスワードを要求するよう設定する 設定なし 電波時計 電波受信ユニットを取り外したときの動作を設定する 通常

“〇~□までの数字を表示する”というプログラムを組み、micro:bit

各テーマ領域ではすべての変数につきできるだけ連続変量に表現してある。そのため

 このフェスティバルを成功させようと、まずは小学校5年生から50 代まで 53

いてもらう権利﹂に関するものである︒また︑多数意見は本件の争点を歪曲した︒というのは︑第一に︑多数意見は

られる。デブリ粒子径に係る係数は,ベースケースでは MAAP 推奨範囲( ~ )の うちおよそ中間となる