728x90

제어자

클래스와 클래스의 맴버(맴버 변수, 메서드)에 부가적인 의미 부여

  • 접근 제어자 : public, default, protected, private 
  • 그 외 : static, final, abstract, native, transient, 등

final

  • 클래스 : 변경될 수 없는 클래스, 확장될 수 없는 클래스가 된다. 그래서 final로 지정된 클래스는 다른 클래스의 조상이 될 수 없다.
  • 메서드 : 변경될 수 없는 메서드, final로 지정된 메서드는 오버라이딩을 통해 재정의 될 수 없다.
  • 맴버변수, 지역변수 : 변수 앞에 final이 붙으면, 값을 변경할 수 없는  상수가 된다.

abstract

  • 클래스 : 클래스 내에 추상 메서드가 선언되어 있음을 의미한다.
  • 메서드 : 선언부만 작성하고 구현부는 작성하지 않은 추상 메서드임을 알린다.

접근 제어자

  • private : 같은 클래스 내에서만 접근이 가능하다.
  • default : 같은 패키지 내에서만 접근이 가능하다.
  • protected : 같은 패키지 내에서 그리고 다른 패키지의 자손 클래스에서 접근이 가능하다.
  • public : 접근 제한이 전혀 없다.

캡슐화와 접근 제어자

접근 제어자를 사용하는 이유 

  • 외부로부터 데이터를 보호하기 위해
  • 외부에는 불필요한, 내부적으로만 사용되는, 부분을 감추기 위해서

다형성

  • 여러가지 형태를 가질 수 있는 능력
  • 조상 타입 참조 변수로 자손 타입 객체를 다루는 것
  • 자손 타입의 참조 변수로 조상 타입의 객체를 가리킬 수 없다.

참조변수의 형변환

  • 사용할 수 있는 맴버의 개수를 조절하는 것
  • 조상 자손 관계의 참조변수는 서로 형변환 가능

instanceof 연산자

  • 참조변수의 형변환 가능여부 확인에 사용. 가능하면 true 반환
  • 형변환 전에 반드시 instanceof로 확인해야 함

매개변수의 다형성

참조형 매개변수는 메서드 호출 시, 자신과 같은 타입 또는 자손 타입의 인스턴스를 넘겨줄 수  있다.

 

추상 클래스

  • 미완성 설계도, 미완성 메서드를 갖고 있는 클래스
  • 다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가
  • 상속을 통해 추상 메서드를 완성해야 인스턴스 생성 가능

추상 메서드

  • 미완성 메서드. 구현부 {} 없는 메서드
  • 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우

추상 클래스의 작성

여러 클래스에 공통적으로 사용될 수 있는 추상 클래스를 바로 작성하거나 기존 클래스의 공통 부분을 뽑아서 추상클래스를 만든다.

추상화된 코드는 구체화된 코드보다 유연하다. 변경에 유리

 

인터페이스

  • 추상 메서드의 집합
  • 구현된 것이 하나도 없는 설계도, 껍데기(모든 맴버가 public)
  • 인터페이스의 조상은 인터페이스만 가능(Object가 최고 조상은 아님)
  • 다중 상속이 가능 

인터페이스의 구현

  • 인터페이스에 정의된 추상 메서드를 완성하는 것
  • 일부만 구현하는 경우 클래스 앞에 abstract를 붙여야 한다.
728x90

+ Recent posts