$B%$%s%?%U%'!<%97?JQ?t$NBeF~(B

Revised: Feb./23rd/2003: Since: Dec./31st/2001

"is-a" $B4X78(B

$BDL>o$N%/%i%9$N>l9g$O!"%$%s%9%?%s%92=$K$h$j:n$i$l$k%*%V%8%'%/%H$r;2>H$9$k(B ID $B$rBeF~$9$kJQ?t$r(B$B%/%i%97?JQ?t(B$B$H$7$F@k8@$7$^$9!#(B

$B%$%s%?%U%'!<%9(B$B7?$NJQ?t$bDj5A$G$-$^$9!#%$%s%?%U%'!<%97?$G@k8@$5$l$?;2>H7?JQ?t$K$O!"$=$N%$%s%?%U%'!<%9$rH$rBeF~$G$-$^$9!#(B

$B%/%i%97?JQ?t$N>l9g!"Ev3:%/%i%9$+$i@8@.$5$l$?%*%V%8%'%/%H$N$_$J$i$:!"%5%V%/%i%9$+$i@8@.$5$l$?%*%V%8%'%/%H$rBeF~$G$-$^$9!#%$%s%?%U%'!<%97?%*%V%8%'%/%H$N>l9g!"5$H%$%s%?%U%'!<%9$N

$BNc$($P!"S.F}N`%/%i%9(B Mammal $B$r7Q>5$7$FG-%/%i%9(B Cat $B$r:n$k>l9g!"!VG-$OS.F}N`$G$"$k!#!W(B(A Cat is a Mammal.) $B$H$$$&4X78$K$"$j$^$9!#L>$E$1$i$l$k%*%V%8%'%/%H$N@8@.85%/%i%9$r<1JL$9$k%$%s%?%U%'!<%9(B Nameable $B$rCat $B$r:n$k>l9g!"!VG-$OL?L>2DG=$G$"$k!#!W(B(A Cat is Nameable.) $B$H$$$&4X78$K$"$k$o$1$G$9!#(B

"is-a" $B4X78$O!"!V!A$O!A$G$"$k!W!"!V!A$O!A$N0l

$BB?BV@-(B

$B%*%V%8%'%/%H$O!"3F!9$,<+J,$N@UG$$GF0:n$7$^$9!#$D$^$j!"0z?t$J$I$GF0:n$rFCDj$7$J$/$H$b!"<+J,$,$J$9$Y$-$3$H$r%*%V%8%'%/%H$,CN$C$F$$$k$N$G$9!#$3$l$r(B$BB?BV@-(B$B!J%]%j%b!<%U%#%:%`!K$H8F$S$^$9!#(B

$B6qBNE*$K@bL@$7$^$9!#%*%V%8%'%/%H$r%9!<%Q!<%/%i%97?$d%$%s%?%U%'!<%97?$KBeF~$7$F%a%=%C%I8F$S=P$7$r$9$k$H!"3F!9$,@8@.$5$l$?%/%i%97?$K1~$8$FE,@Z$KF0:n$7$^$9!#$D$^$j!"F1$8%/%i%97?!"%$%s%?%U%'!<%97?$N%*%V%8%'%/%H$KBP$7$FF1$8%a%=%C%I$r8F$S=P$7$F$b!"$=$N%*%V%8%'%/%H$,@8@.$5$l$?%*%j%8%J%k$N%/%i%9$K1~$8$F!"0[$J$kF0:n$r$9$k$o$1$G$9!#(B

$BNc$($P!"(BDrawable $B%$%s%?%U%'!<%9$K(B draw() $B%a%=%C%I$rDj5A$7$F!"$3$l$r(B Rectangle, Circle$B!"(BTriangle $B$G

Drawable[] shapes = { new Rectangle(), new Circle(), new Triangle() };

$B$3$l$i$N6q>]%/%i%9$G$O(B draw() $B$,JL!9$K

shapes[0].draw();	// $BD9J}7A$rIA$/(B
shapes[1].draw();	// $B4]$rIA$/(B
shapes[2].draw();	// $B;03Q7A$rIA$/(B

$B$3$l$,B?BV@-!J%]%j%b!<%U%#%:%`!K$G$9!#(B

$B%5%s%W%k(B

$B

main() $B%a%=%C%I$+$i$O!"%$%s%?%U%'!<%97?0z?t$r;}$D%a%=%C%I$K!"Ev3:%$%s%?%U%'!<%9$r

TestInterface4.java:

// $B%$%s%?%U%'!<%9(B
interface Circle {
	String calc(double d);
}
// $Bcalc(double r) {
		double circum = 2.0 * Math.PI * r;
		return "$B1_<~!'(B" + circum;
	}
}
// $Bcalc(double r) {
		double area = Math.PI * r * r;
		return "$BLL@Q!'(B" + area;
	}
}
// $B%3%s%H%m!<%k%/%i%9(B
class TestInterface4 {
	// main()$B%a%=%C%I(B
	public static void main(String[] args) {
		Circum obj1 = new Circum();
		Area obj2 = new Area();
		// $B%a%=%C%I$X$N%*%V%8%'%/%H$N0zEO$7(B
		en(obj1);
		en(obj2);
	}
	// $B%$%s%?%U%'!<%97?0z?t$ren(Circle obj) {
		System.out.print("$BH>7B!'(B" + 10 + "$B!!(B");
		System.out.println(obj.calc(10));
	}
}

$B%$%s%?%U%'!<%97?JQ?t(B Circle obj $B$O!"Ev3:%$%s%9%?%s%9$rH$G$-$^$9$N$G!"0[$J$k%/%i%9$r%$%s%9%?%s%92=$7$?%*%V%8%'%/%H(B Circum obj1, Area obj2 $B$G$b!"JQ?t$N7?$H$7$F0lCW$7$^$9!#(B

C:\java>javac TestInterface4.java
C:\java>java TestInterface4
$BH>7B!'(B10$B!!1_<~!'(B62.83185307179586
$BH>7B!'(B10$B!!LL@Q!'(B314.1592653589793
C:\java>

$B%5%s%W%k(B

$BCountableDemo.java $B$O!"%$%s%?%U%'!<%9(B Countable $B$r

interface Countable {
	int getCount();
	void setCount(int aCounter);
}
class Dog implements Countable {
	private int counter;
	public int getCount() {
		return counter;
	}
	public void setCount(int aCounter) {
		counter = aCounter;
	}
}
class Car implements Countable {
	private int number;
	public int getCount() {
		return number;
	}
	public void setCount(int aCounter) {
		number = aCounter;
	}
}
class CountableDemo {
	public static void main(String[] args) {
		Dog dog = new Dog();
		Car car = new Car();
		
		// is-a $B4X78(B
		Countable[] objs = {dog, car};
		
		// $B%$%s%?%U%'!<%9!&%a%=%C%I$NMxMQ(B
		objs[0].setCount(10);
		objs[1].setCount(2);
		
		for (int i = 0; i < objs.length; i++) {
			// $B%$%s%?%U%'!<%9!&%a%=%C%I$NMxMQ(B
			System.out.println(objs[i].getCount());
		}
	}
}


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