반응형
자바 interface 와 abstract 예제로 이해하기
By Commin .December 12, 2016
안녕하세요 commin 입니다. 이번 포스팅에서는 자바의 interface 와 abstract 에 대해 포스팅하겠습니다.
abstract 추상클래스 & 추상메서드
추상클래스의 조건
- 추상클래스(abstract)는일반클래스보다 조금더 추상적은 개념의 것을 정의한다.
- 추상클래스(abstract)의 추상 메서드와 그냥 메서드, 멤버필드, 생성자를 정의 할 수 있지만, 추상메서드는 내용을 정의 할 수 없다.
- 추상클래스(abstract)의 추상메서드를 정의하면 추상클래스를 상속받은 클래스에서는 반드시 추상메서드를 Override 하여 정의하여야 한다.
- 추상클래스(abstract)는 abstract class [클래스명] 으로 정의한다.
- 추상클래스(abstract)의 추상메서드는 [접근제한자] abstract [return 자료형] [메서드이름]() 으로 정의한다.
- 추상클래스(abstract)는 extends 로 상속받는다.
- 추상클래스(abstract)는 다중 상속이 안된다.
예제 살펴보기
ExamAbstract.java
예제를 보면 Animal 이라는 추상클래스를 정의한것이 보일것입니다. Tiger클래스나 Dog 클래스가 특정 동물을 지칭하며 구체적인것에 비해 Animal 추상클래스는 동물이라는 조금더 추상적인 개념으로 쓰였습니다. 동물을 생각하면 일단 동물의 울음소리나 행동이 생각이 나는데요. 그래서 추상클래스안에 추상메서드는 cry() 나 behavior() 같은 추상 메서드로 정의하였습니다. 이렇게 추상메서드를 정의해 놓으면, 이를 상속받은 Tiger 나 Dog 클래스는 반드시 이 메서드를 Override 하여야 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | class Tiger extends Animal { public Tiger(String name) { super(name); } @Override public void cry() { // TODO Auto-generated method stub System.out.println("어흥"); } @Override public void behavior() { // TODO Auto-generated method stub System.out.println("우측으로 빠르게 움직인다."); } } | cs |
Tiger 클래스만 살펴 보자면, cry 메서드와 behavior 메서드를 Override 하고 여기서 재정의 하여 사용한것이 보일것입니다. 조금 특이한것이 있다면 생성자에 인자로 String name 을 받고 이것을 super(name)을 통하여 상위 클래스의 생성자로 보내는 것입니다. 이렇게 사용하면 추상클래스에서 정의했던 생성자를 이용하게되고 추상클래스의 멤버필드인 animal_name 에 String name 을 등록 할 수 있습니다.
1 2 3 4 | Tiger tiger = new Tiger("Hodol"); System.out.println("사자의 이름은 :" + tiger.animal_name); | cs |
이것은 추상클래스만의 성격은 아닙니다. 일반 클래스를 상속받아서 같은 방법으로 사용하여도 같은 결과를 가집니다. 이것을 보여드린 이유는 바로 이어서 설명할 인터페이스(Interface) 와 추상클래스(abstract) 의 차이를 설명드리기 위함이니 잘 기억하고 계세요.
인터페이스(Interface)
인터페이스(interface)의 조건
- 인터페이스(interface)는 추상클래스보다 훨씬 극단적이고 제한적인 성격을 가집니다.
- 인터페이스(interface)는 멤버필드와 추상메서드만 정의 할 수 있습니다.
- 인터페이스(interface)를 상속받을려면 extends를 사용하면 안되고 implements 를 사용하여야 합니다.
- 인터페이스(interface)는 다중상속이 가능합니다.
- 인터페이스(interface)의 추상메서드는 일반클래스의 메서드 형식과 같지만 몸통을 가질 수 없습니다.
- 인터페이스(interface)의 선언은 interface [이름]으로 합니다.
예제 살펴보기
ExamInterface.java
방금전 말씀드린 추상클래스(abstract)의 생성자를 기억해 보세요. 여기서 인터페이스와 큰 차이점은 abstract는 조금더 class 의 성격을 가지고 있고 interface는 그와 다르게 메서드나 멤버변수만을 정의하여 다른 클래스에서 그것을 사용하도록 강제하는 역할에만 충실하다는 것 입니다. 또 다른점은 인터페이스는 implements라는 키워드로 상속을 받기때문에 여러개의 인터페이스를 하나의 클래스에서 같이 사용하는 다중 상속이 가능하지만 abstract는 클래스의 성격이 강하기때문에 extends 로 상속하여 하나의 클래스에서 하나의 abstract만을 상속 할 수 있습니다.
인터페이스 예제에는 그렇게 어려운점이 없으므로 한번씩 따라 코딩하시길 바라며, 이만 포스팅을 마치도록 하겠습니다.
abstract와 interface의 형식의 차이, 쓰임의 차이 등을 유념하면서 예제를 통하여 학습하시길 바랍니다. ^^
- Commin's JAVA BASIC Category
- 자바 이클립스 설치 및 환경변수 설정
- 자바 문법의 개념 및 용어
- 자바 기본 입출력
- 자바 제어문
- 자바 메서드 및 배열
- 자바 클래스
- [초급 JAVA]자바 class의 기본개념/객체(Object) 와 클래스 - 1
- [초급 JAVA]자바 class의 기본개념/객체(Object) 와 클래스 - 2
- [초급 JAVA]자바 생성자로 초기화 하고 코딩하기/JAVA Constructor
- [초급 JAVA]자바 this,static,final 지정예약어 - final
- [초급 JAVA]자바 this,static,final 지정예약어 - this & this()
- [초급 JAVA]자바 this,static,final 지정예약어 - static
- [초급 JAVA]자바 상속(extends) 예제로 이해하기/ super & super() 이해하기
- [초급 JAVA]자바 interface 와 abstract 예제로 이해하기
반응형
'LECTURE > # java basic' 카테고리의 다른 글
JAVA 초급 강좌를 마무리하며.. (1) | 2016.12.22 |
---|---|
[초급 JAVA]자바 상속(extends) 예제로 이해하기/ super & super() 이해하기 (9) | 2016.12.12 |
[초급 JAVA]자바 this,static,final 지정예약어 - static (0) | 2016.11.29 |
[초급 JAVA]자바 this,static,final 지정예약어 - this & this() (0) | 2016.11.29 |
[초급 JAVA]자바 this,static,final 지정예약어 - final (0) | 2016.11.29 |