의견.png

추상메소드

위키원
mkp0312 (토론 | 기여)님의 2020년 8월 28일 (금) 15:35 판 (차이점)
이동: 둘러보기, 검색

추상메소드(abstract method)란 구현없이 선언만 되어 있는 메소드를 말한다. 추상 메소드는 자식 클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드를 의미한다. 메서드는 선언부와 구현부로 구성되어 있다. 추상 메서드란 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨 둔 것이 추상 메서드이다. 실제 내용은 상속받는 클래스에서 구현하도록 비워둔 것이며, 추상메서드 역시 키워드 'abstract'를 앞에 붙여주고, 구현부가 위치할 {}대신 마침을 의미하는 ;을 작성한다. 조상으로부터 상속받은 추상 메서드 중 하나라도 구현하지 않는다면, 추상 클래스로 지정해 주어야 한다.

목적

추상클래스는 실체클래스가 공통적으로 가져야 할 필드와 메소드들을 정의해놓은 추상적인 클래스로 실체 클래스의 멤버인 필드와 메소드를 통일화하기 위해 사용한다. 모든 실체들의 메소드 실행 내용이 동일하다면 추상클래스에 메소드를 작성하면 되지만 실행 내용이 실체클래스마다 달라야 할 경우 추상메소드를 사용하면 된다.

생성 및 구현

생성

추상메소드의 선언은 abstract 키워드를 사용하고 메소드 중괄호 {}가 없다.

[public | protected] abstract 리턴타입 메소드명(매개변수, ...);
public abstract classA {
    public abstract void methodA(int a);
}

구현

추상메소드 오버라이딩

추상클래스에 선언되어 있는 추상메소드를 구현하는 것을 추상메소드의 재정의 또는 오버라이딩이라고 한다.

#추상클래스
public abstract class ClassA { //추상클래스
	public String a;

	public void methodA() {
		System.out.println("일반 메소드입니다.");
	}

	public abtract void methodB(); //추상메소드
}
#추상메소드 오버라이딩_example1
public class ClassB entends ClassA {
	public ClassB() { //생성자
		this.a = "test";
	}

	@Override
	public void method() {
		System.out.pirintln("ClassB 추상메소드 오버라이딩");
	{
}
#추상메소드 오버라이딩_example2
public class ClassC entends ClassA {
	public ClassC() { //생성자
		this.a = "example";
	};

	@Override
	public void method() {
		System.out.pirintln("ClassC 추상메소드 오버라이딩");
	{
}

추상메소드 사용[1]

추상클래스

추상메소드를 하나라도 가진 클래스로 추상메소드가 하나라도 있다면 클래스명 앞에 abstract 키워드를 선언해야 한다. 만약 추상메소드가 하나라도 있어서 추상클래스가 된다면 해당 클래스는 객체를 생성할 수 없다.

#추상클래스
public abstract class ClassA {
	int a;

	public void methodA {
           	System.out.println("메소드입니다.");
	}

	public void methodB();  //추상메소드
}

인터페이스

모든 메소드가 추상메소드인 클래스로 인터페이스명 앞에 interface 키워드를 선언해야한다. 인터페이스의 멤버는 상수와 메소드만 있으며 필드는 없다. 인터페이스는 추상메소드를 포함하고 있어 객체를 생성할 수 없으며, 다중상속을 지원한다.

#인터페이스
public interface InterfaceA {
	int a=5;

	public void methodA();

	public void methodB();
}

차이점

추상클래스와 인터페이스 차이점
추상클래스 인터페이스
  • 일반 메소드 포함 가능
  • 상수, 변수 포함 가능
  • 단일 상속
  • 모든 메소드가 추상메소드
  • 상수만 포함 가능
  • 다중 상속 지원

각주

  1. 나비와꽃기린, 〈추상메소드/인터페이스〉, 《개인블로그》, 2016-06-22

참고자료

같이 보기


  의견.png 이 추상메소드 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.