1 minute read

Updated:

다형성

  • object casting : 형변환
  • virtual method invocation
  • polymorphic argument (슈퍼클래스를 입력값으로 이용하면 슈퍼클래스, 상속클래스 객체 모두 사용 가능하다.)
  • instanceof
  • heterogeneous collection

클래스의 인스턴스 : object(객체)

instanceof

  • 상속 관계에 의한 객체가 입력값으로 들어왔을 때 구분을 지어야 한다면 instanceof를 사용해서 어떤 클래스에서 온 건지 구분.
  • 상속 관계를 고려해서 써야 함. 무조건 슈퍼클래스가 나오면 처음부터 필터링된다.

heterogeneous collection ==> 배열

  • 여러 다양한 타입으로 집합이 만들어진다.

(반대 개념) homogeneous colletion

  • 같은 타입으로 집합이 만들어진다.

용어 정리 :

  • 변수, variable –> 데이터(싱글)
  • collection –> 데이터 집합 ex) array(배열)
  • 데이터 구조(data structure)

final

  • 원래 기능을 못하고 만들어진 형태가 마지막인 클래스. 상속 불가.
  • final class : 상속 x
  • final method : override x
  • final variable : 상수

변수 : 데이터가 변할 수 있다.

int a = 10;
a = 20;

상수 : 데이터가 변할 수 없다. 고정값.

final int a = 10;
a = 20; //error 
  1. 반드시 초기화를 해줘야 함. 클래스에서 setter 지원하지 않는다.
  2. 변수 선언 시 명시적 초기화. 이미 초기화 됐으므로 생성자에서는 명시할 필요 없음.
  3. 명시적 초기화 하지 않았다면, 생성자 초기화해야 함.

접근제한자 access modifier

  • 클래스, 클래스 내 변수, 메소드들에 대한 접근을 제한

종류

  • public : 모든 클래스에서 접근 가능
  • protected : 상속받은 객체 어디에서나 접근 가능. 상속관계가 없어도 같은 패키지면 접근 가능. (defalut + 상속)
  • default : 같은 패키지 내에서만 접근 가능. 접근 제한자 지정하지 않을 때 default
  • private : 같은 클래스 내에서만 접근 가능

abstract class 추상클래스

  1. 객체가 가지는 특성을 추상화, 하위 클래스에서 구현을 목적으로 정의함.
  2. 표준화 역할. 상속을 목적으로 동일한 기능 및 속성을 가진다.
  3. 객체 만들 수 없고 상속을 통해서만 구현 가능.

abstract method 추상메소드

  1. 추상메소드가 하나라도 있으면 일반클래스는 추상클래스가 된다.
  2. 추상 메소드는 구현부{ }가 없고 이름만 호출하고 끝난다.

inferface

  1. 인터페이스는 추상클래스의 일종
  2. 인터페이스는 순수한 설계만을 표현하기 위해 동작에 대한 명세(가이드/표준화)만 기술.
  3. 인터페이스 내 메소드는 추상 메소드 (코딩하지 않아도 자동으로 추상클래스로 처리)
  4. 추상 메소드를 포함하므로 객체 생성 불가
  5. 인터페이스 내 멤버(변수)는 public static final(어디서든 클래스 이름으로 호출 가능한 상수)
  6. implements를 이용해 모든 추상메소드 구현

의문) 기능은 똑같은데 왜 두 가지로 나눴을까? 언제 쓸까?

다중 상속

  • 단일 상속, 다중 구현의 형태
  • 메인 클래스를 하나 상속받고, 필요한 기능은 인터페이스 여러 개로 정리한다.
public PassengerAndTruck extends Car
			implements PassangerModel, TruckModel

추상클래스 vs 인터페이스

  1. 추상클래스는 일반 메소드, 일반 변수 선언이 가능하므로 구현부가 넓다.
  2. 인터페이스 모든 메소드는 추상메소드이고, 변수도 무조건 상수. 구현 메소드 없다.

Categories:

Updated: