검수요청.png검수요청.png

"Abstract"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
(사용 목적)
(사용 목적)
11번째 줄: 11번째 줄:
  
 
===사용 목적===
 
===사용 목적===
자바(Java)에서 추상 메소드를 선언하여 사용하는 목적은 추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함으로, 만약 일반 메소드로 구현한다면 사용자에 따라 해당 메소드를 구현할 수 있고, 안 할 수도 있다. 하지만 추상 메소드가 포함된 추상 클래스를 상속 받은 모든 자식 클래스는 추상 메소드를 구현해야만 [[인스턴스]](instance)를 생성할 수 있으므로, 반드시 구현하게 된다.
+
자바(Java)에서 추상 메소드를 선언하여 사용하는 목적은 추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함으로, 만약 일반 메소드로 구현한다면 사용자에 따라 해당 메소드를 구현할 수 있고, 안 할 수도 있다. 하지만 추상 메소드가 포함된 추상 클래스를 상속 받은 모든 자식 클래스는 추상 메소드를 구현해야만 [[인스턴스]](instance)를 생성할 수 있으므로, 반드시 구현하게 된다.<ref name="TCP SCHOOL"></ref> 인스턴스는 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체라고 볼 수 있다.<ref>heejeong Kwon,〈[https://gmlwjd9405.github.io/2018/09/17/class-object-instance.html 클래스, 객체, 인스턴스의 차이]〉,《Heee's Development Blog》,2018-09-17</ref>
  
 
==추상 클래스(abstract class)==
 
==추상 클래스(abstract class)==

2021년 7월 12일 (월) 10:17 판

Abstract(추상)라는 것은 상속을 강제하는 일종의 규제라고 볼 수 있다. 즉, 추상클래스(abstract class)나 추상메소드(abstract method)를 사용하기 위해서는 반드시 상속해서 사용하도록 강제하는 것이 'abstract'이다.[1]

개요

abstract은 한국어로는 추상으로 번역된다. 추상메소드(abstract method)는 자식클래스(class)에서 반드시 오버라이딩(overriding)해야만 사용할 수 있는 메소드를 의미한다. 자바에서는 이러한 하나 이상의 추상메소드(method)를 포함하는 클래스(class)를 가리켜 추상클래스(abstract class)라고 한다.

추상 메소드(abstract method)

문법

추상 메소드(abstract method)란 자식 클래스에서 반드시 오버라이딩(overriding)해야만 사용할 수 있는 메소드를 의미한다. 자바(Java)에서 추상 메소드를 선언하여 사용하는 목적은 추상 메소드가 포함된 클래서를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함이다. 예를 들면 모듈처럼 중복되는 부분이나 공통적인 부분은 미리 다 만들어진 것을 사용하고, 이를 받아 사용하는 쪽에서 자신에게 필요한 부분만을 재정의하여 사용함으로써 생산성이 향상되고 배포 등이 쉬워지기 때문이다. 이러한 추상 메소드는 선언부만이 존재하며, 구현부는 작성되어 있지 않는다. 바로 이 작성되어 있지 않고, 이 작성되어 있지 않은 구현부를 자식 클래스에서 오버라이딩하여 사용한다.

abstract 반환타입 메소드이름();

자바에서 추상 메소드는 이러한 문법으로 선언한다. 이렇게 [[선언부]만 있고 구현부가 없다는 의미로 선언부 끝에 바로 세미클론(;)을 추가한다.[2]

사용 목적

자바(Java)에서 추상 메소드를 선언하여 사용하는 목적은 추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함으로, 만약 일반 메소드로 구현한다면 사용자에 따라 해당 메소드를 구현할 수 있고, 안 할 수도 있다. 하지만 추상 메소드가 포함된 추상 클래스를 상속 받은 모든 자식 클래스는 추상 메소드를 구현해야만 인스턴스(instance)를 생성할 수 있으므로, 반드시 구현하게 된다.[2] 인스턴스는 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체라고 볼 수 있다.[3]

추상 클래스(abstract class)

문법

사용 목적

예제

abstract class Animal {
  abstract void cry();
}
class Cat extends Animal{
  void cry(){
    System.out.println("야옹~!");
  }
}
class Bird extends Animal{
  void cry(){
    System.out.println("짹짹~!");
  }
}  
public class AbstractExample{
  public static void main(String[]args){
    //Animal a = new Animal(); //추상 클래스는 인트턴스를 생성할 수 없다.
    Cat c = new Cat();
    Bird d = new Bird();
    
    c.cry();
    d.cry();
  }
}

실행 결과

야옹~!
짹짹~!

각주

  1. abstract〉, 《Opentutorials.org》, 2014-01-27
  2. 2.0 2.1 ,〈44)추상 클래스〉 ,《TCP SCHOOL》
  3. heejeong Kwon,〈클래스, 객체, 인스턴스의 차이〉,《Heee's Development Blog》,2018-09-17

참고자료

같이 보기


  검수요청.png검수요청.png 이 Abstract 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.