본문 바로가기

개발

자바 extends와 implements의 차이

자바에서 상속하는 방법은 두가지방법이 있다 바로 extends와 implement이다.

 

두개의 차이점은 뭘까

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();
  }
}

 

이 코드는 extends의 예시이다

Car클래스는 Vehicle을 상속을 받아 ExtendsSample클래스에서 Car의 인스턴스를 만들어 Vehicle의 함수를 사용할수있다

 

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();
  }
}

다음은 implements의 예시이다

implements가 사용된 Class에서는 TestInterface 클래스에있는 함수를 오버라이딩(재정의)을 해줘야  상속이 완료된다

그 이후는 extends와 똑같은 매커니즘이다

 

그러면 extends와 implements의 차이는 오버라이딩 유/무 만 차이가 있는것인가?

그러면 implemets는 쓸모없을거같다.

가장 큰 차이점은 다중상속의 가능 유/무 이다

extends는 한 클래스에서 여러개의 클래스를 상속받고 싶어도 받지를못한다

하지만 implements는 여러개의 클래스를 상속받을수있다

public class Son implements Father, Mother{...}

이 코드처럼 말이다.