$BB?BV@-(B - $B%]%j%b!<%U%#%:%`(B

Revised: Nov./19th/2003; Since: May/31st/2002

$BB?BV@-$H$O$J$s$@$m$&$+(B

$BA0@a$^$G$G!"(B$B7Q>5(B$B!"(B$BCj>]%/%i%9(B$B!"(B$B%$%s%?%U%'!<%9(B$B$K$D$$$F>R2p$7$^$7$?!#%9!<%Q!<%/%i%97?$X$NBeF~!?%$%s%?%U%'!<%97?$X$NBeF~$O%*%V%8%'%/%H;X8~$N=EMW$JFCD'$G$9!#%a%=%C%I0z?t$K0[$J$k7?$N%*%V%8%'%/%H$rBeF~$9$k$3$H$G!"%a%=%C%I$NF/$-$,JQ$o$k$3$H$rB?BV@-$H8F$S$^$9!#(B

$BB?BV@-(B
$B%*%V%8%'%/%H$,!"<+J,$NF0:n$K@UG$$r;}$C$F!"<+N)E*$KF0:n$9$k$3$H!#(B
$B%*%V%8%'%/%H$N7?$G$O$J$/!"@8@.$5$l$?%*%j%8%J%k$N%/%i%97?$G

$B%9!<%Q!<%/%i%97?$NJQ?t$K$O!"%5%V%/%i%97?$N%*%V%8%'%/%H;2>H$rJ];}$9$k$3$H$,2DG=$G$9!#$^$?!"$b$H$b$H%5%V%/%i%97?$G@8@.$5$l$?%*%V%8%'%/%H$N;2>H$O!"%9!<%Q!H$,BeF~$5$l$?%9!<%Q!<%/%i%97?JQ?t$KBP$7$F!"%5%V%/%i%9$G%*!<%P!<%i%$%I$5$l$?%a%=%C%I$r8F$S=P$9$H!"Ev3:%*%V%8%'%/%H$r@8@.$7$?%/%i%9$K$FDj5A$7$?%*!<%P!<%i%$%I!&%a%=%C%I$r5/F0$7$^$9!#(B

$B%9!<%Q!l9g$bF1MM$G$9!#$H$/$K!"%$%s%?%U%'!<%97?JQ?t$XH$rBeF~$9$k@_7W$O!"A`:n$,E}0lE*$G=@Fp@-$,9b$/$J$j$^$9!#F1$8%/%i%97?$NJQ?t$KF1$8%7%0%M%A%c$G%a%=%C%I8F$S=P$7$r$7$F$b!"%*%V%8%'%/%H<+?H$N%*%j%8%J%k$N7?$K1~$8$FE,@Z$J%a%=%C%I$,

$B7Q>5(B - extends

$B0JA0>R2p$7$?DL$j!"%/%i%9$OB>$N%/%i%9$r!"$?$@0l$D$@$1(B$B7Q>5(B$B$9$k$3$H$,$G$-$^$9!#Score $B%/%i%9$r7Q>5$7$F$$$k(B ScoreEnglish $B%/%i%9$H(B ScoreMath $B%/%i%9$G$9!#(BScore $B%/%i%9$K$O%a%=%C%I@k8@$@$1$G!"=hM}$O5-=R$7$F$$$^$;$s!#(B

class Score {
	void setScores(int[] vals) {}
	double calc() {
		return 0;
	}
}
class ScoreEnglish extends Score {
	int[] scores;
	void setScores(int[] vals) {
		scores = vals;
	}
	double calc() {
		double total = 0;
		for (int i = 0; i < scores.length; i++) {
			total += scores[i];
		}
		return total;
	}
}
class ScoreMath extends Score {
	int[] scores;
	void setScores(int[] vals) {
		scores = vals;
	}
	double calc() {
		double total = 0, mean = 0;
		for (int i = 0; i < scores.length; i++) {
			total += scores[i];
		}
		mean = total/scores.length;
		return mean;
	}
}

$B$3$N%/%i%9$rMxMQ$9$k%3%s%H%m!<%k%/%i%9$r:n$C$F!"F0:n$r3NG'$7$^$7$g$&!#main() $B%a%=%C%I$G(B MathScore $B%/%i%9$r%$%s%9%?%s%92=$7$F$$$^$9!#$=$N%*%V%8%'%/%H$r(B PolymorphismView $B7?%*%V%8%'%/%H$N%a%=%C%I(B getData() $B$K!"%a%=%C%I0z?t$GEO$7$F$$$^$9!#(B

PolymorphismView $B%/%i%9$NJ}$G$O!"(BScore $B7?%*%V%8%'%/%H$r0z?t$K$H$k$h$&$KDj5A$7$F$$$^$9!#%9!<%Q!<%/%i%97?JQ?t$K$O!"%5%V%/%i%97?JQ?t$rBeF~$G$-$k$N$G!"(B ScoreMath, ScoreEnglish $B6&$KBeF~2DG=$G$9!#(B

PolymorphismControl.java:

class PolymorphismControl {
	public static void main(String[] args) {
		ScoreMath math = new ScoreMath();
		int[] mathScores = {5,3,4,6,8,6,4};
		ScoreEnglish english = new ScoreEnglish();
		int[] englishScores = {7,8,6,10,7,6,4};
		PolymorphismView view = new PolymorphismView();
		view.getData(math, mathScores);
		view.getData(english, englishScores);
	}
}
class PolymorphismView {
	void getData(Score obj, int[] scores) {
		double value = 0;
		obj.setScores(scores);
		value = obj.calc();
		System.out.println(value);
	}
}

$B

C:\java>javac PolymorphismControl.java
C:\java>java PolymorphismControl
5.142857142857143
48.0
C:\java>

PolymorphismView $B$G8F$P$l$?(B calc() $B%a%=%C%I$O!"(B obj $B$K$I$N%*%V%8%'%/%H$,BeF~$5$l$F$$$k$+$K$h$C$F!"obj $B$K(B ScoreMath $B7?%*%V%8%'%/%H$,BeF~$5$l$F$$$l$PJ?6Q$r7W;;$7!"(B ScoreEnglish $B7?%*%V%8%'%/%H$,BeF~$5$l$F$$$l$PAmOB$,7W;;$5$l$^$9!#(B

$B$3$N$h$&$J@-$BB?BV@-(B$B$H8F$S$^$9!#(B$BB?MM@-(B$B!"(B$B%]%j%b!<%U%#%:%`(B$B$J$I$N8@MU$b;H$o$l$^$9!#(B

$BCj>]%/%i%9(B

$B>e$K5s$2$?Nc$O!"(B Score $B%/%i%9$O%a%=%C%I$N@k8@$r$7$F$$$k$@$1$G!"=hM}$N5-=R$r$7$F$$$^$;$s!#$3$N$h$&$J>l9g$O!"0JA0>R2p$7$?(B$BCj>]%/%i%9(B$B$K$7$F$7$^$($^$9!#(B

abstract class Score {
	abstract void setScores(int[] vals);
	abstract double calc();
}

$B$3$N(B Score $B%/%i%9$N$h$&$K!"I,$:7Q>5$5$l$F;H$o$l$k$3$H$,A0Ds$G$-$k>l9g$O!"Cj>]%/%i%9$K$7$F$*$$$?J}$,0BA4$G$9!#Cj>]%a%=%C%I$,0l$D$G$b;D$C$F$$$l$P!"%$%s%9%?%s%9$+$G$-$J$$$+$i$G$9!#(B

$B%$%s%9%?%s%92=$7$h$&$H$9$k$H!"

Abstract.java:

class Abstract {
	public static void main(String[] args) {
		Score obj = new Score();
	}
}
C:\java>javac Abstract.java
Abstract.java:3: Score $B$O(B abstract $B$G$9!#%$%s%9%?%s%9$r@8@.$9$k$3$H$O$G$-$^$;$s!#(B
                Score obj = new Score();
                            ^
$B%(%i!<(B 1 $B8D(B
C:\java>

$BA09`$N(B Score $B%/%i%9$r$3$l$GCV$-49$($F!"(B PolymorphismControl.java $B$r

$B%$%s%?%U%'!<%9(B

$B%/%i%9$N7Q>5(B (extends) $B$O0l$D$N%/%i%9$@$1$G$7$?$,!"(B$B%$%s%?%U%'!<%9(B$B$Nimplements) $B$OJ#?t$N%$%s%?%U%'!<%9$,2DG=$G$7$?!#(B

$BA09`$N(B Score $B%/%i%9$O!"%a%s%P!<$N%a%=%C%I$,A4$FCj>]%a%=%C%I$J$N$G!"$=$N$^$^%$%s%?%U%'!<%9$K$9$k$3$H$,$G$-$^$9!#(B

interface Score {
	void setScores(int[] vals);
	double calc();
}

$B%$%s%?%U%'!<%9$NI|=,$G$9!'(B

$B0J>e$r9M$($F!"

class ScoreEnglish implements Score {
	int[] scores;
	public void setScores(int[] vals) {
		scores = vals;
	}
	public double calc() {
		double total = 0;
		for (int i = 0; i < scores.length; i++) {
			total += scores[i];
		}
		return total;
	}
}
class ScoreMath implements Score {
	int[] scores;
	public void setScores(int[] vals) {
		scores = vals;
	}
	public double calc() {
		double total = 0, mean = 0;
		for (int i = 0; i < scores.length; i++) {
			total += scores[i];
		}
		mean = total/scores.length;
		return mean;
	}
}

$B0J>e!"=q$-49$($F

C:\java>javac PolymorphismControl.java
C:\java>java PolymorphismControl
5.142857142857143
48.0
C:\java>

$BB?BV@-(B

$BK\9`$G8+$F$-$?$H$*$j!"B?BV@-$r9M$($k$H!"%5%V%/%i%9!?$^$7$$$3$H$K$J$j$^$9!#%5%V%/%i%9$,%9!<%Q!<%/%i%97?JQ?t$KBeF~$5$l$?$H$-$K$O!"%5%V%/%i%9FH<+$K@k8@$7$F

$B0lJ}!"%9!<%Q!<%/%i%9!?%$%s%?%U%'!<%9$G@k8@$5$l$F$$$J$$%a%=%C%I$dJQ?t$rDI2C$9$k$3$H$b%*%V%8%'%/%H;X8~$G$O6K$a$F<+A3$J$3$H$G$9!#(B

$B7Q>5!?

$B2?$l$rA*$V$+$O!"E,MQ$9$k>u67$K0MB8$9$k$b$N$G!"%G%6%$%s%Q%?!<%s$NJY6/!"%3!<%G%#%s%07P83$N@Q$_>e$2$K$h$C$F=,F@$5$l$^$9!#(B



Copyright © 2002 SUGAI, Manabu. All Rights Reserved.
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送