Abstract 편집하기
편집을 되돌릴 수 있습니다.
이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
− | '''Abstract'''(추상)라는 것은 [[상속]]을 강제하는 일종의 규제라고 볼 수 있다. 즉, [[추상클래스]](abstract class)나 [[추상메소드]](abstract method)를 사용하기 위해서는 반드시 [[상속]]해서 사용하도록 강제하는 것이 'abstract'이다.<ref>〈[https://opentutorials.org/course/1223/6062 abstract]〉, | + | '''Abstract'''(추상)라는 것은 [[상속]]을 강제하는 일종의 규제라고 볼 수 있다. 즉, [[추상클래스]](abstract class)나 [[추상메소드]](abstract method)를 사용하기 위해서는 반드시 [[상속]]해서 사용하도록 강제하는 것이 'abstract'이다.<ref>〈[https://opentutorials.org/course/1223/6062 abstract]〉, 《Opentutorials.org》, 2014-01-27</ref> |
==개요== | ==개요== | ||
− | abstract은 한국어로는 추상으로 번역된다. [[추상메소드]]는 [[자식클래스]](class)에서 반드시 [[오버라이딩]](overriding)해야만 사용할 수 있는 [[메소드]]를 의미한다. [[자바]] | + | abstract은 한국어로는 추상으로 번역된다. [[추상메소드]](abstract method)는 [[자식클래스]](class)에서 반드시 [[오버라이딩]](overriding)해야만 사용할 수 있는 [[메소드]]를 의미한다. [[자바]]에서는 이러한 하나 이상의 추상메소드(method)를 포함하는 [[클래스]](class)를 가리켜 [[추상클래스]](abstract class)라고 한다. |
− | ==추상 메소드== | + | ==추상 메소드(abstract method)== |
===문법=== | ===문법=== | ||
− | + | 추상 메소드(abstract method)란 자식 클래스에서 반드시 오버라이딩(overriding)해야만 사용할 수 있는 메소드를 의미한다. 자바(Java)에서 추상 메로스를 선언하여 사용하는 목적은 추상 메소드가 포함된 클래서를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함이다. 예를 들면 모듈처럼 중복되는 부분이나 공통적인 부분은 미리 다 만들어진 것을 사용하고, 이를 받아 사용하는 쪽에서 자신에게 필요한 부분만을 재정의하여 사용함으로써 생산성이 향상되고 배포 등이 쉬워지기 때문이다. 이러한 추상 메소드는 선언부만이 존재하며, 구현부는 작성되어 있지 않는다. 바로 이 작성되어 있지 않고, 이 작성되어 있지 않은 구현부를 자식 클래스에서 오버라이딩하여 사용한다. | |
abstract 반환타입 메소드이름(); | abstract 반환타입 메소드이름(); | ||
− | 자바에서 | + | 자바에서 추상 메소드는 이러한 문법으로 선언한다. 이렇게 선언부만 있고 구현부가 없다는 의미로 선언부 끝에 바로 세미클론(;)을 추가한다.<ref name="TCP SCHOOL">,〈[http://tcpschool.com/java/java_polymorphism_abstract 44)추상 클래스]〉 ,《TCP SCHOOL》</ref> |
===사용 목적=== | ===사용 목적=== | ||
− | |||
− | ==추상 클래스== | + | ==추상 클래스(abstract class)== |
===문법=== | ===문법=== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
===사용 목적=== | ===사용 목적=== | ||
− | |||
==예제== | ==예제== | ||
36번째 줄: | 21번째 줄: | ||
abstract void cry(); | abstract void cry(); | ||
} | } | ||
− | + | ||
− | class | + | class Cat extends Animal{ |
void cry(){ | void cry(){ | ||
System.out.println("야옹~!"); | System.out.println("야옹~!"); | ||
} | } | ||
} | } | ||
− | + | ||
class Bird extends Animal{ | class Bird extends Animal{ | ||
void cry(){ | void cry(){ | ||
48번째 줄: | 33번째 줄: | ||
} | } | ||
} | } | ||
− | + | ||
public class AbstractExample{ | public class AbstractExample{ | ||
public static void main(String[]args){ | public static void main(String[]args){ | ||
− | //Animal a = new Animal(); // 추상 클래스는 인트턴스를 생성할 수 없다. | + | //Animal a = new Animal(); //추상 클래스는 인트턴스를 생성할 수 없다. |
− | + | Cat c = new Cat(); | |
Bird d = new Bird(); | Bird d = new Bird(); | ||
59번째 줄: | 44번째 줄: | ||
} | } | ||
} | } | ||
− | |||
− | |||
− | |||
− | |||
− | + | 실행 결과 | |
+ | 야옹~! | ||
+ | 짹짹~! | ||
{{각주}} | {{각주}} | ||
==참고자료== | ==참고자료== | ||
− | * 〈[https://opentutorials.org/course/1223/6062 abstract]〉, | + | * 〈[https://opentutorials.org/course/1223/6062 abstract]〉, 《Opentutorials.org》, 2014-01-27 |
− | |||
− | |||
− | |||
==같이 보기== | ==같이 보기== |