본문 바로가기

Languages/Java

[Java] 인터페이스, 추상클래스, enum

인터페이스, abstract 클래스

사용 이유 : - 설계시 선언해두면 개발할 때 기능 구현에 집중 가능

- 공통적인 인터페이스, abstract 클래스를 선언해 놓으면, 선언과 구현 구분 가능.

 

Interface

  • 인터페이스 내부에 선언된 메소드들은 몸통이 있으면 안됨. 선언만 하기.
  • 클래스에 인터페이스 적용시 public class 클래스이름 implements 인터페이스나열.

 

abstract 클래스

  • 클래스 선언 시 class 앞에 abstract 추가. public abstract class sample{}
  • abstract로 선언된 메소드가 하나라도 있으면, 그  클래슨느 반드시 abstract로 선언되어야함
  • abstract클래스는 몸통이 있는 메소드가 0개 이상 있어도 괜찮음. 인터페이스와 달리 static이나 final 메소드가 있어도 됨.
  • implements 사용x
  • 클래스에 abstract클래스 적용시, 상속과 동일하게 extends 사용

※ extends 클래스 뒤에는 클래스 단 하나, implements 뒤에는 인터페이스 여러개 가능

 

final

  • 클래스가 final로 선언되어 있으면 상속해줄 수 없음
  • 더이상 확장해선 안되거나, 상속받아서 변경되면 안되는 클래스일 때 final 선언
  • 메소드를 final로 선언하면, 해당 메소드가 override되는 것을 막을 수 있음
  • 변수에 final을 사용하면, 변수에 값을 재할당할 수 없음
    • 인스턴스 변수, 클래스 변수 : 생성과 동시에 초기화
    • 매개 변수, 지역 변수 : 선언할 때 반드시 초기화할 필요 없음
  • 클래스에 사용시, 객체를 두번 이상 생성할 순 없지만, 클래스에 선언된 인스턴스 변수나 클래스 변수가 final은 아니므로 자유롭게 사용가능

 

enum

  • 어떤 클래스가 상수만으로 만들어져 있을 경우에 사용.
  • 열거형 클래스
  • 상수들만 선언하기. 별도로 타입을 지정하거나 값 할당할 필요 없음
  • switch문에서 효과적으로 사용
  • 사용할 땐, 별도로 생성자 만들 필요없이 "enum클래스이름.상수이름"을 지정해서 사용. enum은 생성자 생성이 되지만, 생성자를 통해 객체를 생성할 순 없음. 
  • enum클래스도 생성자를 사용할 순 있지만 아무것도 명시하지 않은 package-private 와 private으로만 사용가능
  • Enum클래스의 부모 클래스는 java.lang.Enum클래스임.
  • toString()은 Overriding가능. finalize,hashCode,equls는 불가능
  • compareTo(E e)메소드

'Languages > Java' 카테고리의 다른 글

[Java] 형변환, 다형성  (0) 2023.08.22
[Java] 상속  (0) 2023.08.22
[Java] 패키지, 접근제어자  (0) 2023.08.19
[Java] 매개 변수 지정  (0) 2023.08.19
[Java] Static과 Static 블록  (0) 2023.08.11