Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 푸리에 변환
- HTML
- oracle
- iframe 태그
- 상속
- g검정
- BorderLayout
- 반응형 웹 프로젝트
- FFT
- FileWriter
- 파이썬
- html 기초
- CSS
- rnn
- html 프로젝트
- 미디어쿼리
- java
- ObjectOutputStream
- Database
- inline
- Position
- css 기초
- 반응형웹
- GridLayout
- 퍼셉트론
- 예제
- Codility
- FlowLayout
- 메서드
- 사전학습
Archives
- Today
- Total
도라에몽주머니
[Java] extends, implements의 차이 본문
개요
기사시험 준비하면서 다시 자바를 복습하던 중, 오랜만에 implements 문제를 봤는데 오랜만에 봐서 개념이 가물가물했다.
이번 기회에 인터페이스, 상속 등에 관해 자세히 정리해두려고 한다.
상속(inheritance) 이란?
기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미한다.
쉽게 이야기하면 현실에서 부모에게 재산 등을 자식이 상속받듯이, 부모 클래스로부터 정의된 메소드를 자식 클래스가 상속받아 부모의 클래스를 재정의하는 것이다.
- 부모 클래스 : 자식 클래스에게 상속해주는 클래스
- 자식 클래스 : 부모 클래스의 모든 특성을 물려받아 새롭게 작성된 클래스

상속의 형태
상속에는 여러가지 형태가 있는데 여기에서는 헷갈리기 쉬운 extends와 implemets만 정리해보려 한다.
- extends : 부모에서 선언과 정의를 모두하며, 자식은 부모의 변수나 메소드를 오버라이딩할 필요 없이 그대로 사용할 수 있다. (다중상속 지원 X)
- implements : 부모 객체는 선언만 하며, 정의는 반드시 자식이 오버라이딩해서 사용해야 한다. (다중상속과 같은 기능을 함)
더보기
✔️ 오버라이딩
상속 관계에 있는 부모 클래스에서 이미 정의된 메소드를 자식 클래스에서 같은 시그니처를 갖는 메소드로 다시 정의하는 것이다.
참고 : http://www.tcpschool.com/java/java_inheritance_overriding
extends
- 상속의 가장 대표적인 형태
- 모든 선언/정의를 부모가 하며, 자식은 오버라이딩 할 필요 없이 부모의 메소드/변수를 그대로 사용할 수 있다. (필요에 따라 오버라이딩 해도 상관 X)
- Java에서는 다중상속을 지원하지 않는다. (= 부모클래스가 두 개 이상 존재할 수 없다.)
public class Son extends Father, Mother{...} // 에러 발생(다중상속 지원 X)
- 예제 코드
class Vehicle {
protected int speed = 3;
public int getSpeed(){
return speed;
}
public void setSpeed(int speed){
this.speed = speed;
}
}
class Car extends Vehicle{
public void printspd(){
System.out.println(speed);
}
}
public class ExtendsSample {
public static main (String[] args){
Car A = new Car();
System.out.println(A.getSpeed());
A.printspd();
}
}
Car 클래스는 Vehicle을 상속받아 getSpeed() 메소드를 사용해 바로 speed를 출력했다.
extends를 통해 Car 클래스로 부모의 메소드인 getSpeed() 뿐 아니라 변수인 speed까지 직접 사용한 것을 확인할 수 있다.
implements
- 부모에서는 선언만 하며 반드시 자식은 부모의 메소드를 오버라이딩 해야한다.
- 다중상속과 같은 기능을 지원한다.
public class Son implements Father, Mother{...} // 에러 발생 X
- 예제 코드
interface TestInterface{
public static int num = 8;
public void fun1();
public void fun2();
}
class InterfaceExam implements TestInterface{
@Override
public void fun1(){
System.out.println(num);
}
@Override
public void fun2() {
}
}
public class InterfaceSample{
public static void main(String args[]){
InterfaceExam exam = new InterfaceExam();
exam.fun1();
}
}
Reference
https://velog.io/@hkoo9329/%EC%9E%90%EB%B0%94-extends-implements-%EC%B0%A8%EC%9D%B4
'Programming > Java' 카테고리의 다른 글
| [Java] 파일 입출력 정리 (0) | 2022.11.13 |
|---|---|
| [Java] 진법 변환 정리 (N진수 ↔ 10진수) (0) | 2022.11.03 |
| [Java] 실수형(float, double)의 소수점 표현 방식, 부동소수점 (1) | 2022.09.21 |
| [MacOS / JAVA] MacOS에서 이클립스(Eclipse) 설치하기 (0) | 2021.03.05 |