12
20

์ƒ˜ํ”Œ์„ ๋งŒ๋“ค์–ด๋†“๊ณ  ๋‚˜์ค‘์— ๊ฐ€์ ธ๋‹ค๊ฐ€ ์“ฐ๊ธฐ ์œ„ํ•œ ์šฉ๋„.

 

์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ๋ฐ›์•„ ๊ตฌํ˜„ํ•˜๋ ค๋Š” ์„œ๋ธŒ ํด๋ž˜์Šค์—์„œ๋Š” ๋ฌด์กฐ๊ฑด ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ํ•ด์•ผ ํ•œ๋‹ค.(๊ตฌํ˜„ ์•ˆ ํ•  ๊ฒฝ์šฐ ๊ทธ ํด๋ž˜์Šค๋„ abstract๋ฅผ ๋ถ™์—ฌ์›Œ์„œ ์ถ”์ƒ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•œ๋‹ค.)

abstract class Shape{
	abstract void draw();
}

class Line extends Shape{
	@Override
	void draw() {
		System.out.println("Line");
	}
}

class Circle extends Shape{
	@Override
	void draw() {
		System.out.println("Circle");
	}
}

class Rect extends Shape{
	@Override
	void draw() {
		System.out.println("Rect");
	}
	
}

public class AbstractEx {

	public static void main(String[] args) {
		//Shape s = new Shape(); ์ถ”์ƒํด๋ž˜์Šค์— ๋Œ€ํ•ด์„œ๋Š” ๊ฐ์ฒด์ƒ์„ฑ๊ธˆ์ง€
		Shape s = new Circle();
		s.draw();
	}
}

 

์˜ˆ์ œ

abstract class Calc{
	abstract int add(int a, int b);
	abstract int sub(int a, int b);
	abstract double avg(int[] a);
}

public class GoodCalc extends Calc {
	@Override
	int add(int a, int b) {
		return a+b;
	}

	@Override
	int sub(int a, int b) {
		return a-b;
	}

	@Override
	double avg(int[] a) {
		int sum = 0;
		for(int i=0; i<a.length; i++)
			sum += a[i];
		return sum/(double)a.length;
	}
	
	public static void main(String[] args) {
		GoodCalc gc = new GoodCalc();
		int []arr = {10,20,30,40,50};
		System.out.println("gc.add(2,3): "+gc.add(2, 3));
		System.out.println("gc.sub(20,3): "+gc.sub(20, 3));
		System.out.println("gc.avg(arr): "+gc.avg(arr));
	}

}

 

728x90
๋ฐ˜์‘ํ˜•
COMMENT