Revised: Nov./19th/2003; Since: May/31st/2002
$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
$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$X $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 $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 $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 $B>e$K5s$2$?Nc$O!"(B $B$3$N(B $B%$%s%9%?%s%92=$7$h$&$H$9$k$H!"
$BA09`$N(B $B%/%i%9$N7Q>5(B ( $BA09`$N(B $B%$%s%?%U%'!<%9$NI|=,$G$9!'(B $B0J>e$r9M$($F!" $B0J>e!"=q$-49$($F $BK\9`$G8+$F$-$?$H$*$j!"B?BV@-$r9M$($k$H!"%5%V%/%i%9!? $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$B7Q>5(B -
extends
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;
}
}
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!#(BPolymorphismView
$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!#(BPolymorphismControl.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);
}
}
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!"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$BCj>]%/%i%9(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();
}
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!#(BAbstract.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>
Score
$B%/%i%9$r$3$l$GCV$-49$($F!"(B PolymorphismControl.java
$B$r$B%$%s%?%U%'!<%9(B
extends
) $B$O0l$D$N%/%i%9$@$1$G$7$?$,!"(B$B%$%s%?%U%'!<%9(B$B$NScore
$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();
}
abstract public
$B$,$D$/(Bfinal public static
$B$,$D$/(Bclass 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;
}
}
C:\java>javac PolymorphismControl.java
C:\java>java PolymorphismControl
5.142857142857143
48.0
C:\java>
$BB?BV@-(B
Copyright © 2002 SUGAI, Manabu. All Rights Reserved.
SEO
[PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送