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

Microsoft PowerPoint ppt

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint ppt"

Copied!
16
0
0

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

全文

(1)

独習 Java (第3版)

6.7 変数の修飾子

6.8 コンストラクタの修飾子

6.9 メソッドの修飾子

(2)

6.7 変数の修飾子(1/3)



変数宣言の直前に指定できる修飾子



全部で7種類ある

不意に値が変更されることがある変数 volatile クラスの永続的な状態の一部ではない変数 transient インスタンス変数ではない変数 static 他のクラスからアクセスできる変数 public サブクラスまたは同じパッケージ内のコードからしか アクセスできない変数 protected 同じクラスのコードからしかアクセスできない変数 private 定数として使える変数 final 意味 キーワード

(3)

6.7 変数の修飾子(2/3)



一部の修飾子は同時に指定できない



public, protected, privateの3つのキーワードからは

1つしか指定できない



これら修飾子を一切指定しないと変数は

非final、非transient, 非volatileな

インスタンス変数と解釈される



このような変数には同じパッケージ内の

コードからしかアクセスできない

(4)

6.7 変数の修飾子(3/3)



final変数の使い方の例

class L {

static final int x = 5 ; }

class StaticFinal {

public static void main(String args[]) { System.out.println(L.x); } } 

実行結果は“5”が出力される



このプログラムではクラスLの中の変数xの

値を変更することは出来ない

(5)

6.8 コンストラクタの修飾子(1/2)



コンストラクタの宣言に指定できる修飾子



全部で3種類ある



2つ以上同時に指定できない



指定がなければ同じパッケージ内の

コードからしかアクセスできない

他のクラスからアクセスできるコンストラクタ public サブクラスまたは同じパッケージ内のコードからしか アクセスできないコンストラクタ protected 同じクラスのコードからしかアクセスできないコンストラクタ private 意味 キーワード

(6)

6.8 コンストラクタの修飾子(2/2)



例:

class Test { int x ;

public Test( int y ) { x = y ; } private Test() { } } class PrivateConstructor {

public static void main( String args[] ) { Test t1 = new Test( 30 ) ; System.out.println( t1.x ) ; //Test t2 = new Test() ; }

}

publicなので呼び出せる

privateなので呼び出せない 実行結果は“30”が表示される

(7)

6.9 メソッドの修飾子(1/4)



メソッドの宣言に指定できる修飾子



全部で8種類ある

実行を開始するときにロックを取得するメソッド synchronized インスタンスメソッドではないメソッド static 他のクラスからアクセスできるメソッド public サブクラスまたは同じパッケージ内のコードからしか アクセスできないメソッド protected 同じクラス内のコードからしか呼び出されないメソッド private Javaのバイトコードではなく、 ホストCPUで使われるマシン語で実装されるメソッド native オーバーライドできないメソッド final このクラスでは実装しないメソッド abstract 意味 キーワード

(8)

6.9 メソッドの修飾子(2/4)



abstractメソッドを含むクラスはそれ自体も

abstractで宣言されている必要がある



public, protected, privateは

他の修飾子と同時に指定できない



synchronizedはマルチスレッドの

プログラムを作成する場合に重要



これらの修飾子を指定しないとメソッドは

非abstract, 非final, 非native, 非synchronized

(9)

6.9 メソッドの修飾子(3/4)



例:

class Singleton {

static Singleton singleton; private Singleton() {}

public static Singleton getInstance() { if (singleton == null)

singleton = new Singleton(); return singleton;

} }

class SingletonDemo {

public static void main(String args[]) {

Singleton s1 = Singleton.getInstance(); Singleton s2 = Singleton.getInstance(); if (s1 == s2) System.out.println("Equal"); else System.out.println("Not equal"); } } singletonオブジェクトが まだないときには作成 singletonオブジェクトを返す singletonオブジェクトを 取得するために getInstance()を使用している

(10)

6.9 メソッドの修飾子(4/4)



先ほどのプログラムの実行結果

Equal



これはs1とs2が同じオブジェクトを

(11)

6.10 ObjectクラスとClassクラス(1/5)



Objectクラスについて



ObjectクラスとはJavaクラス階層の頂点に位置し

全てのオブジェクトはObjectクラスの系列下にある



Objectクラスに定義された状態と動作は

他の全てのクラスに継承される

(12)

6.10 ObjectクラスとClassクラス(2/5)



Objectクラスのメソッド



equals()メソッド

構文: boolean equals( Object obj )

2つの変数が同じオブジェクトを参照しているかを調べる



getClass()メソッド

構文: Class getClass()

現在のオブジェクトのClassオブジェクトを返す



toString()メソッド

構文: String toString()

現在のオブジェクトを表す文字列を返す

(13)

6.10 ObjectクラスとClassクラス(3/5)



Classクラスについて



実行中のプログラム内のクラス、インターフェイスに

関する情報がカプセル化されている



基本データ型、void、特定の次元を持つ所定の

データ型の配列それぞれにClassオブジェクトが存在

(14)

6.10 ObjectクラスとClassクラス(4/5)



Classクラスのメソッド



getName()メソッド

構文: String getName()

データ型の名前を返す



get Superclass()メソッド

構文: Class getSuperclass()

現在のクラスのスーパークラスのClassオブジェクトを返す



forName()メソッド

構文: static Class forName(String clsName) throws

ClassNotFoundException

(15)

6.10 ObjectクラスとClassクラス(5/5)



ObjectクラスとClassクラスのメソッド使用例

class ClassDemo {

public static void main(String args[] ) {

Integer obj = new Integer( 8 );

Class cls = obj.getClass();

System.out.println(cls);

}

}

Integerオブジェクトを作成 Classオブジェクトを取得 オブジェクトに関する 情報を表示 実行結果は “class java.lang.Integer”と 表示される

(16)

課題

class Person {

static Person Display ; private String name ; final int age ;

public Person( String name, int age ) { this.name = name ; this.age = age ; Display() ; } public OneYearAfter() { age ++ ; System.out.println( "1 year after" ) ; Display() ; }

protected void Display() {

System.out.println( name + " " + age ) ;

} }

class Test3 {

public static void main( String args[] ) {

Person p = new Person( "John", 22 ) ; p.OneYearAfter() ; } }

次のプログラムについて問題があれば指摘し

改善策を述べなさい。

参照

関連したドキュメント

私たちの行動には 5W1H

BRAdmin Professional 4 を Microsoft Azure に接続するには、Microsoft Azure のサブスクリプションと Microsoft Azure Storage アカウントが必要です。.. BRAdmin Professional

線遷移をおこすだけでなく、中性子を一つ放出する場合がある。この中性子が遅発中性子で ある。励起状態の Kr-87

認定研修修了者には、認定社会福祉士認定申請者と同等以上の実践力があることを担保することを目的と

・子会社の取締役等の職務の執行が効率的に行われることを確保するための体制を整備する

つまり、p 型の語が p 型の語を修飾するという関係になっている。しかし、p 型の語同士の Merge

 英語の関学の伝統を継承するのが「子どもと英 語」です。初等教育における英語教育に対応でき

自然言語というのは、生得 な文法 があるということです。 生まれつき に、人 に わっている 力を って乳幼児が獲得できる言語だという え です。 語の それ自 も、 から