ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] abstract 와 interface의 차이
    카테고리 없음 2022. 5. 18. 17:24
    반응형

    추상 클래스 - abstract 

     

    클래스 내부에 추상 메소드가 하나 이상 포함되거나 abstract로 정의된 경우를 말한다.

    추상 클래스와 일반 클래스는 상속 관계

    추상 클래스가 부모, 일반 클래스가 자식

    추상 클래스는 새로운 일반 클래스를 위한 부모 클래스의 용도로만 사용된다.

     

     ex) public class dog extends animal  

     


     

    인터페이스 - interface 

     

    인터페이스는 추상 메소드보다 한 단계 더 추상된 메소드이다.

    사용하기 위해서는 일반 클래스에서 implements 라는 예약어로 특정 인터페이스를 구현하겠다고 명시한다.

    ex)  public  class  userServiceImpl  implements  userService 

     

    명시한 인터페이스가 가지는 추상 메소드들은 구현받은 클래스에서 하나도 빠짐없이 Override(재정의) 해야한다.

    인터페이스에서 적는 모든 메소드들은 추상 메소드로 간주되기 때문에 abstract를 적지 않는다.

    기존에는 일반메소드를 구현할 수 없었지만, 자바 8부터는 default 예약어를 이용해 일반메소드 구현이 가능하다.

    인터페이스는 static final 필드만 가질 수 있으며, 필드를 선언 할 때는 public static final 이 생략되어 있다.

    인터페이스도 추상 클래스와 마찬가지로 new 연산자를 이용해 객체 생성이 불가하다

    인터페이스는 추상 클래스와 다르게 다중 상속이 가능하다.


     final

    이 키워드가 붙으면 정의 후에 수정이 불가능하다.

     

    [static 메소드]

    static이 선언된 메소드는 오버라이딩 되지 않고 메소드 숨김이 일어난다.

    또한 객체의 레퍼런스가 아닌 클래스 이름으로도 메소드를 호출할 수 있다.

     

    [static 멤버변수]

    하나의 객체내에서만 전역변수로 사용. 그러나 static이 선언된 멤버 변수는 개체들간의 전역 변수처럼

    사용될 수 있다. 즉 이 멤버변수는 해당 클래스를 사용해 생성되는 모든 객체가 공유한다.

     


    추상 클래스와 인터페이스의 공통점

     

    인스턴스화 할 수 없다.

    추상 클래스를 extends로 상속받은 자식들과 인터페이스를 implements 하고 

    구현한 자식들만 객체를 생성할 수 있다.

     

     

     

    추상 클래스와 인터페이스의 차이점 

     

    추상 클래스는 단일상속, 인터페이스는 다중상속이 가능하다.

    추상 클래스의 목적은 상속을 받아 기능을 확장시키는 것이다.

    인터페이스의 목적은 구현하는 모든 클래스에 대해 특정한 메소드가 반드시 존재하도록 강제하는 역할

    반응형

    댓글

Designed by Tistory.