パッケージ,アクセス修飾子 2008年4月27日 海谷 治彦.

Slides:



Advertisements
Similar presentations
アルゴリズムとプログラミン グ (Algorithms and Programming) 第6回:クラスとインスタンス クラスの宣言 アクセス修飾子 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの実際の定義と使い 方 クラスの宣言 アクセス修飾子 インスタンスの生成.
Advertisements

オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
WebサービスII (第12回)‏ 2007年12月19日 植田龍男.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
WebサービスII (第10回) 2007年11月28日 植田龍男.
アルゴリズムとデータ構造1 2007年6月12日
Iアプリプログラミング その1  鳥居秀徳.
アルゴリズムとプログラミング (Algorithms and Programming)
Javaのインタフェース についての補足 2006年5月17日 海谷 治彦.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
独習Java ・ 10.6  Hashtableクラス ・ 10.7  String Tokenizerクラス  12月12日    小笠原 一恵.
独習Java ・ 12.1  インターネットアドレス ・ 12.2  サーバーソケットとソケット  12月 19日    小笠原 一恵.
Androidソースコード公開後のJNI
WebサービスII (第8回) 2007年11月14日 植田龍男.
社会人学習講座 「Javaプログラミング概論」
JavaBeans とJSP データベース論 第5回.
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
第20章 Flyweight ~同じものを共有して無駄をなくす~
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
コンパイラの解析 (2) GCJのデータ構造 - 1.
~手続き指向からオブジェクト指向へ[Ⅱ]~
実行時のメモリ構造(2) Javaスタック内動作他
第12回 2007年7月13日 応用Java (Java/XML).
ソフトウェア工学 知能情報学部 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
リファレンスの復習と例外処理 2005年6月14日 海谷 治彦.
リファレンス,配列,例外処理 その他演習に役立つこと
第3回 2007年4月27日 応用Java (Java/XML).
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
第6回 2007年6月1日 応用Java (Java/XML).
EclipseでWekaのAPIを呼び出す
第11週:super/subクラス、継承性、メソッド再定義
Nakano School of Business 経営情報ビジネス科 【 Java概論(Test5)】
暗号技術 ~JAVAプログラム①~ (5週目)
Collection, Generics, Iterator
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
クラスファイルの構造解析(2) 2003年6月23日 海谷 治彦.
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
独習Javaゼミ第10回 セクション1~3 発表者 直江 宗紀.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
プログラムが実行されるまで 2002年4月14日 海谷 治彦.
C#プログラミング実習 第3回.
計算機プログラミングI 第3回 プリミティブ値 クラスメソッド クラス変数 式と演算 変数の利用
Javaによる Webアプリケーション入門 第4回
Chapter 5 5.5 thisキーワード 5.6 インスタンス変数とインスタンスメソッド 結城 隆
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

パッケージ,アクセス修飾子 2008年4月27日 海谷 治彦

パッケージ クラス,インタフェースをグルーピングするためのからくり. 加えて,特定のクラス(インタフェース)を同じパッケージに属するクラスからのみ利用できるように情報隠蔽できる. ま,これはないとあんまりパッケージの意味がない. 異なるパッケージに属する同じ名前のクラスを作る(使う)ことができる.(いわゆる名前空間)

アクセス制御のルール 個々のメソッドだけでなく, クラス全体,およびコンストラクタにも指定が必要.

例 class Test{ public static void main(Strings[] args){ package foo; public class Foo{ public void run(){ new FooImpl().run(); } void go(){...} } package foo; class FooImpl{ void run(){ print(“Hello”); } } class Test{ public static void main(Strings[] args){ foo.Foo fvar=new foo.Foo(); fvar.run(); fvar.go(); // × Foo は public だが,go()はちがう foo.FooImpl fi=new FooImpl(); // ×そもそも FooImplが非public }

例 class Test{ public static void main(Strings[] args){ package foo; class FooImpl{ void run(){ print(“Hello”); } } package bar; public class Foo{ public int run(){ return 314; } } package foo; public class Foo{ public void run(){ new FooImpl().run(); } void go(){...} } class Test{ public static void main(Strings[] args){ foo.Foo fvar=new foo.Foo(); fvar.run(); bar.Foo bvar=new bar.Foo(); System.out.println(bvar.run()); }

実際的なパッケージ これまたJavaの標準APIは,それぞれ機能・特性別にパッケージ分けされている. どんなクラスなどう隠蔽されているかは定かでない.(ソースを見ればわかるが・・・)

import 他のパッケージ内の公開クラスを,パッケージ名無しで利用するための仕組み. 利用する場合,名前が短くなるので便利. しかし,名前の衝突(同じ名前のクラスを別途利用してしまった)の危険度は増す.

例 class Test{ void run(){ java.util.Vector v=new java.util.Vector(); } import java.util.Vector; class Vector{ void run(){ Vector v=new Vector(); } import java.util.Vector; class Test{ void run(){ Vector v=new Vector(); } import java.util.*; class Test{ void run(){ Vector v=new Vector(); }