메뉴 건너뛰기

조회 수 75 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

자바에서 extends와 implements는 아예 쓰임새가 다른데

잘 모르고 사용하다 보면 차이가 뭔지 헷갈린다

차례대로 한번 알아보자

 

 

 

먼저 extends인데

위의 ExtendsMe 클래스는 ExtendsImplements 클래스에서 상속받을 클래스이다

extends를 통해 ExtendsMe 클래스를 상속받고 객체화하면

부모 클래스(ExtendsMe)의 메소드, 변수를 사용할 수 있다

여기서 extends는 한 클래스만 가능하기 때문에

extends a, b 이런 식은 안된다

단 하나의 클래스에서만 extends를 받을 수 있다

 

실 테스트 시 코드는 아래와 같다

 

public class ExtendsMe {
	
	public void extendsCall() {
		System.out.println("ExtendsMe CALL!");
	}

}
public class ExtendsImplements extends ExtendsMe {

	public static void main(String[] args) {
		ExtendsImplements ei = new ExtendsImplements();
		ei.extendsCall();
	}

}

 

다음으로는 implements인데

implements는 class가 아닌 interface를 가져오는 것이기 때문에

class가 아니라 interface를 작성해야 한다

 

 

 

 

이후 interface InterfaceMe, InterfaceMe2를 작성하고

메소드를 넣는데 메소드의 반환형과 이름만 작성하면 끝난다

안의 내용은 작성할 수 없는데

 

인터페이스는 implements 시 구현해야 할 메소드의 종류만 정의하고 실 구현은

implements 받은 클래스에서 구현한다

 

아래 스크린샷에서 InterfaceMe 인터페이스에서 call 메소드를 작성했기 때문에

InterfaceMe를 implements 받은 ExtendsImplements는 반드시 call 메소드를 작성해야 한다

(InterfaceMe2 도 마찬가지)

 

작성하지 않을 시 에러가 발생한다

 

그리고 implements는 extends와 다르게 여러 interface를 implements 가능하다

 

테스트용 코드는 아래와 같다

 

public interface InterfaceMe {
	
	public void call();
	
}
public interface InterfaceMe2 {
	
	public void call2();

}
public class ExtendsImplements implements InterfaceMe {

	@Override
	public void call() {
		System.out.println("interface에 작성한 method는 implements 시 반드시 작성해야 함");
	}
	
	public static void main(String[] args) {
		ExtendsImplements ei = new ExtendsImplements();
		ei.call();
	}

}

 

마지막으로 java에서 extends와 implements의 차이를 알아보자면

 

extends

객체화 시 상속받은 부모 클래스의 메소드와 변수를 사용 가능, 여러 클래스에서 상속 불가

 

implements

여러 interface를 implements 가능, 메소드는 이름과 반환형만 정의하고 실 구현은 implements 한 클래스에서 구현

 


List of Articles
번호 제목 날짜 조회 수
151 JSP, Spring, GMail 메일발송 간단 예제 2016.09.12 32791
150 JQuery 자동완성 플러그인 JSDT설치 file 2016.09.19 8896
149 전자정부 프레임워크란? file 2016.09.19 8342
148 파일 읽고쓰는 암호화/복호화 2016.09.21 7385
147 웹브라우저(크롬) 설정하여 웹을 실행해 보자 file 2016.09.19 7205
146 회원가입 폼(form)으로 보는 Validator 구현하는 방법 file 2016.08.29 7108
145 전자정부표준프레임워크 - 설치 file 2016.09.02 6277
144 기본적인 스크립트 보안 2019.01.16 6044
143 eclipse 콘솔(로그)에 디버그(Debug) 모드에서 실행된 쿼리문을 보여주자. - 전자정부프레임워크 오라클 file 2016.08.29 6001
142 공통컴포넌트 생성하기 - 게시판 file 2016.09.19 5754
141 회원가입 양식에서 (필수/옵션)필드 추가/제거하기 file 2016.08.29 5334
140 날짜 시간 포맷 제어 자바 클래스 : JAVA DateUtils Date time file 2016.12.09 5233
139 스프링(Spring)의 Validator 기능을 사용하다가 '정의되지 않음 또는 null 참조인 'type' 속성을 가져올 수 없습니다.'라는 오류를 만났을 때 해결방법 file 2016.08.29 5165
138 System.out.println(); 이클립스에서 자동화기능 사용 file 2016.09.19 5158
137 접근 제한자 private/ protected/ public / default file 2016.10.06 5136
136 전자정부프레임워크 v2.5, v2.6 오라클 세팅하기 file 2016.09.12 5109
135 예외 만들기 2016.09.13 4961
134 MySQL에 All-in-one 설치시 webmaster로 로그인 안되는 문제 해결을 위한 2가지 수정사항 file 2016.08.29 4954
133 다양한 문자 조합을 이용한 카운팅 구하기 2016.12.09 4941
132 자바 XML 제어 라이브러리 XStream : JAVA 2016.12.09 4918
Board Pagination Prev 1 2 3 4 5 6 7 8 Next
/ 8

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved