5.9 メソッドのオーバーロード 5.10 変数の引渡し 2003/11/21 紺野憲一

Slides:



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

独習JAVA Chapter 6 6.6 クラスの修飾子 6.7 変数の修飾子 結城 隆. 6.6 クラスの修飾 abstract インスタンス化できないクラス。1つまたは複数のサブクラスで 実装してはじめてインスタンス化できる。 final 継承されたくないことを明示する。これ以上機能拡張 / 変更でき.
プログラミング第5回 1 while ループ 文字列の操作
プログラミング実習 1 ・ 2 ク ラス 第 2 週目 担当教員 : 渡邊 直樹. 課題 2 ● 2 × 2型行列の固有値, 固有ベクトルを求め る EigMatrix.java というプログラムを作成せ よ。 ● 行列の各要素はコマンド・プロンプトから入力 ● 計算した結果もコマンド・プロンプトに表示.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
関数(静的メソッド:static method)
第10章:自分自身の関数を書く 10月31日(金) 発表者:紺野憲一
プログラミング基礎I(再) 山元進.
ISD実習E 2009年6月29日 LISPシステム入門 (第5回) 関数ポインタ eval システム関数.
Applet 岡部 祐典 鈴木 敬幸.
~手続き指向からオブジェクト指向へ(Ⅰ)~
Step-by-Step Guide on How to Start ALICE Analysis
アルゴリズムとデータ構造1 2007年6月12日
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング基礎I(再) 山元進.
プログラミング基礎I(再) 山元進.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
繰り返し プログラミング 第4回 繰り返し プログラミング第4回.
社会人学習講座 「Javaプログラミング概論」
第20章 Flyweight ~同じものを共有して無駄をなくす~
C#とC++とオブジェクト指向 上甲 健史.
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
オブジェクト指向入門.
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
補足説明.
プログラミング言語入門 手続き型言語としてのJava
アルゴリズムとプログラミング (Algorithms and Programming)
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
第7回独習Javaゼミ セクション 1~4 発表者 直江 宗紀.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
ローカル変数とグローバル変数 ローカル変数  定義された関数内だけで使用できる変数 グローバル変数 プログラム全体で使用できる変数.
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
P n ポインタの基礎 5 q m 5 7 int* p; int 型の変数を指すポインタ int* q; int 型の変数を指すポインタ int n=5, m=7; int 型の変数 int array[3]; int* pArray[3]; p = &n; ポインタにアドレスを代入しているのでOK.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向プログラミングと開発環境
オブジェクト・プログラミング 第8回.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング 3 2 次元配列.
文字列へのポインタの配列 static char *lines[MAXLINES]; lines[0] NULL
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
ポインタとポインタを用いた関数定義.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
計算機プログラミングI 第3回 プリミティブ値 クラスメソッド クラス変数 式と演算 変数の利用
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
Chapter 5 5.5 thisキーワード 5.6 インスタンス変数とインスタンスメソッド 結城 隆
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向 プログラミング 第四回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
演算子のオーバーロード.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
プログラミング演習I 2003年6月11日(第9回) 木村巌.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
値渡しと参照渡しについて.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング 3 ポインタ(1).
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

5.9 メソッドのオーバーロード 5.10 変数の引渡し 2003/11/21 紺野憲一 Java入門 5.9 メソッドのオーバーロード 5.10 変数の引渡し                  2003/11/21                   紺野憲一

メソッドのオーバーロード メソッドのオーバーロード 引数の数や型が違えば同じ名前の変数を複数個利用できる。  引数の数や型が違えば同じ名前の変数を複数個利用できる。    例) int mes(int a,int b,int c)       int mes(int a,int b,int c,int d) int mes(int a,int b,double c)       これは同時に宣言する事ができる。

引数の引渡し メソッドに引き渡した変数をメソッド内部で変更しても外部での値は変わらない。これはメソッドに引き渡される値は別個に用意して用いられるためである。  しかし、配列やオブジェクトを引き渡す場合その参照(Cで言うポインタ)が引き渡されるため変更が外部まで影響される。  ※参照(ポインタ):変数や配列が保存されているメモリの場所を指す。

引数の受け渡し例1 メソッドaに ・int i ・int j[3] ・StringBuffer sb の3つを受け渡し した2つは自動的に参照受け渡しになる。 class Mozii { public static void a(int i,int j[],StringBuffer sb) { i=5;                       j[0]=6; sb.append("efgh"); } public static void main(String args[]) { int a=1,b[]={2,3,4}; StringBuffer sb=new StringBuffer("abcd"); System.out.println(a+" "+b[0]+" "+b[1]+" "+b[2]+" "+sb); a(a,b,sb); }} 出力結果 1 2 3 4 abcd 1 6 3 4 abcdefgh

引数の受け渡し例2 henkouにtの参照のコピーが渡される。 ここではhenkou中でjの参照を変更している。 メイン中では元のjの位置を参照するので値は変わらない。 class Mozii { public static void henkou(int j[]) { int t[]={6,7,8}; j=t; } public static void main(String args[]) { int b[]={2,3,4}; System.out.println(b[0]+" "+b[1]+" "+b[2]); henkou(b); }} 出力結果 2 3 4 2 3 4

問題 (1)コマンドラインから数を2個から4個入力しその和を出力するプログラムを作れ。 (2)例2で関数の実行後に値が変わるようにするにはどうすればよいか答えよ。

回答 c=Integer.parseInt(args[2]); (1) d=Integer.parseInt(args[3]); tasu(a,b,c,d);} if(args.length==3){ a=Integer.parseInt(args[0]); b=Integer.parseInt(args[1]); tasu(a,b,c);} if(args.length==2){ tasu(a,b);} }} (1) class Mozii { public static void tasu(int a,int b,int c,int d) { System.out.println(a+b+c+d); } public static void tasu(int a,int b,int c) { System.out.println(a+b+c); public static void tasu(int a,int b) { System.out.println(a+b); public static void main(String args[]) { int a,b,c,d; if(args.length==4){ a=Integer.parseInt(args[0]); b=Integer.parseInt(args[1]);

回答 (2)メソッド内部のみ public static void henkou(int j[]) { int t[]={6,7,8}; j[0]=t[0]; j[1]=t[1]; j[2]=t[2]; }