프로그래밍/java

[자바JAVA] 추상클래스와 인터페이스

pupu91 2022. 7. 14. 13:25
반응형

추상클래스

 


 

  • 추상메소드를 0개 이상 포함하는 클래스 추상메소드 없어도 됨
  • 필드 가능. 생성자가능-> 객체화가능. 일반 메소드 가능. 미완성 메소드(추상메소드)가능
  • 추상클래스로는 인스턴스 생성 불가능 (x) Product pro = new Product() ; 
  • 다형성을 활용하여 상속받은 하위 클래스에 인스턴스 생성 후 추상클래스 사용
  • 추상클래스의 추상메소드는 오버라이딩 강제성 부여

 

 

  • 추상메소드

메소드의 선언부만 있고 구현부가 없는 메소드

반드시 abstract 키워드를 메소드 헤드에 작성 해야 함.

public abstract void method();

 

 


인터페이스

 


반응형
  • 추상 메소드와 상수 필드만 가질 수 있는 클래스의 변형체
  • 필요한 기능을 공통화 해서 강제성을 부여할 목적(표준화)
  • 인터페이스는 다중상속이 가능함.
  • 인스턴스 생성 x, 생성자x
  • 레퍼런스 타입으로만 사용 가능
  • static 메소드는 작성이 가능함(JDK 1.8 추가된 기능)
  • static 메소드는 오버라이딩 불가능
  • static호출 : 인터페이스명.메소드명(); 
  • 상수 필드 접근은 인터페이스명. 필드명으로 접근
  • default 키워드를 사용하면 non-static 메소드 작성 가능
  • default 키워드는 interface내에서만 작성 가능, 해당 메소드 사용할 시에는 default 제거 후 오바라이딩 
  • 인터페이스가 인터페이스를 상속 받을 때 : extends (다중 상속 가능)
  • 클래스에서 인터페이스를 상속 받을 때 :  implements(다중 상속 가능), extends로 다른 클래스를 상속 받고 있는 경우 추가로 인터페이스 상속이 가능함(extends 키워드를 앞에 작성하고 implements 키워드를 작성)
  • 인터페이스 상속받은 클래스는 인터페이스에서 작성한 추상 메소드를 전부 오버라이딩 해야 함.
  • public abstract는 묵시적 사용 가능 함. 단, 인터페이스의 메소드 오버라이딩 시 접근제한자는 반드시 public으로 해야함.

 

구분 추상 클래스 인터페이스
상속 단일 상속 다중 상속
구현 extends implements
메소드 일반메소드, 추상메소드 둘다 사용가능 추상메소드만
abstract 명시적 사용 묵시적 사용
객체 객체 생성 불가 객체 생성 불가
용도 참조 타입 참조 타입

 

반응형