개발자 기초부터 시작하기

[JAVA] 인터페이스와 추상클래스의 차이 본문

IT 면접 준비/JAVA 지식

[JAVA] 인터페이스와 추상클래스의 차이

뉴비늅 2019. 3. 28. 17:30

자바 기본 개념서를 보면 추상클래스(Abstract Class)와 인터페이스에 대해 공부할때 

 

애매하게 설명하고 어떻게 쓰는지, 왜 비슷한 용도의 두개가 나뉘어 쓰이는지에 대한 설명이 부족했다

 

이번글의 목표는 다음과 같다.


- 인터페이스란 무엇인지

- 추상클래스란 무엇인지

- 각각의 사용 이유 및 차이점


인터페이스란 ?

 - 클래스의 설계도 혹은 명세서이다.

 - 모든 메소드는 public abstract (생략가능) 메소드들이며 일반 변수는 가질 수 없다.

 - interface 키워드를 통해 생성된다.

 

인터페이스의 모양

public interface Vehicle {
	public abstract void move();
}

 

인터페이스를 구현한 클래스

public class Car implements Vehicle{
	@Override
	public void move() {
		// TODO Auto-generated method stub
		
	}
}

 

추상 클래스란?

- 자바에서 클래스는 일반 클래스와 추상 클래스로 구분이 된다.

- 0개 이상의 추상 메소드(abstract 메소드)를 가지고 있고, 일반 메소드, 일반 변수 등을 가질 수 있다.

- class 앞에 abstract 키워드를 사용해 생성한다.

public abstract class Animal {
	int a = 0;
	String k = "동물";
	
	// 추상 메소드
	public abstract void color();
	protected abstract void height(); 
	
	// 일반 메소드
	public void printName(String name) {
		System.out.println(name);
	};
}

 

추상 클래스를 상속받은 Cat 클래스

public class Cat extends Animal{

	@Override
	public void color() {
		// 부모(Super Class) Animal에서 받은 변수 a
		System.out.print(a);
	}

	@Override
	protected void height() {
		// TODO Auto-generated method stub
		
	}
	
	// 일반 메소드인 printName은 무조건 구현하지 않아도됨
	
}

 

"뭐 이정도 차이가 있다는 건 알겠어.. 근데 뭐 때문에 나눴지?" 라는 생각이 들 수 있다.

 

둘 다 추상메소드를 가지고 있고.. 외관상으로도 크게 차이가 없어보이니 말이다.

 

간단하게 조금 더 설명이 들어가자면

 

추상 클래스는

 - 슈퍼클래스의 기능을 이용하거나 확장하기 위해 활용된다.

 - 일반 변수와 메소드를 활용할 수 있다.

 - 일반 메소드는 상속받을 클래스에서 다시 재정의할 필요는 없다.

 - 다중상속은 불가하다.

 

인터페이스는

 - 하나의 메소드로 상속받은 클래스들의 동작을 일관성 있도록 도와준다.

 - 약속 같은 것으로 협업에 중요한 역할을 한다.

 - 여러 인터페이스를 구현할 수 있다.

 


참조자료

 

 

자바의 추상 클래스와 인터페이스

추상 클래스와 인터페이스의 차이 | 추상 클래스(Abstract class)와 인터페이스(Interface)의 차이 및 존재 이유를 설명해주세요. 클래스는 크게 일반 클래스와 추상 클래스로 나뉘는데 추상 클래스는 클래스 내 '추상 메소드'가 하나 이상 포함되거나 abstract로 정의된 경우를 말합니다. 반면 인터페이스는 모든 메소드가 추상 메소드인 경우입니다. (자바 8에서는 default

brunch.co.kr

 

자바의 추상클래스(abstract class)와 인터페이스(interface)

자바의 상속 개념을 공부할때 빠지지 않고 등장하는 것이 바로 오늘 배울 추상클래스(abstract class)와 인터페이스(interface)다. 무슨 공통점이 있는지 무슨 차이점이 있는지 말도 애매모호하고 서로 비슷비슷하므로 이 부분만 나오면 ...

alecture.blogspot.com

 

 

추상클래스(abstract class)의 존재 이유?

자바를 배우다 보면, 자바의 강력한 기능 중에 하나인 상속(Inheritance), 다형성(Polymorphism)에서 많은 혼란을 격게 된다. 그 혼란중에서 추상클래스(abstract class)와 인터페이스(interface)를 배우게 되는데..

itewbm.tistory.com

 

Comments