부트캠프 기록/Section1

[Java] 객체지향 프로그래밍 심화/ 13일차 기록

bbangduck 2022. 9. 9. 14:32

다형성

  • 다형성의 의미와 장점
    • 한 타입의 참조변수가 여러 타입의 객체를 참조할 수 있음
    • 상위 클래스 타입의 참조변수를 통해 하위 클래스의 객체를 참조할 수 있도록 함
    • 코드의 유연성
    • 의존성을 가진 클래스에서 의존하는 클래스의 하위 클래스 참조변수마다 메서드를 작성하지 않아도 됨

 

  • 참조변수의 타입변환, 업캐스팅/ 다운캐스팅
    • 상속관계를 전제로 함
    • 업캐스팅은 생략해도 됨
    • 다운캐스팅은 업캐스팅이 선행됐어야 한다는 전제가 있음
    • 업캐스팅: 상위클래스 참조변수에 하위클래스 객체를 참조하는 것, 형변환 연산자 생략 가능
    • 다운캐스팅: 하위클래스 참조변수에 하위클래스 객체를 참조하는 것 , 형변환 연산자 생략 불가능

 

  • <참조변수> instanceof 타입 
    • 코드가 복잡해지면 클래스들의 종속관계를 알기 어려울 수 있음
    • instanceof연산자는 타입변환이 가능한지를 ture/false 로 반환함

 

추상화

  • 추상화의 개념과 목적
    • 기본 클래스들의 공통적인 요소들을 추출해서 상위클래스를 만드는 것 
    • 클래스의 역할과 구현을 분리해줌

 

  • abstract 제어자
    • 추상적인, 미완성
    • 추상 메서드, 추상 클래스
    • 객체 생성 불가

 

  • 추상 클래스
    • 추상 메서드를 하나라도 포함한 클래스
    • 상속 관계에 있어 새로운 클래스를 작성하는데 유용

 

  • final 키워드
    • 클래스: 변경, 상속, 확장 불가
    • 메서드: 오버라이딩 불가 
    • 변수: 값 변경 불가

 

  • 인터페이스
    • 추상 메서드를 하나 이상 포함
    • 기본적으로 추상 메서드와 상수만을 멤버로 가질 수 있지만, 자바 8부터 default/static 메서드 사용 가능
    • 내부 모든 필드 public static final 
    • static/default 메서드를 제외한 모든 메서드는 public abstract
    • 위의 제어자 생략 가능
    • 역할과 구현을 분리시켜 사용자는 복잡한 구현의 내용 또는 내용의 변경과 상관없이 해당 기능을 사용할 수 있음

 

  • 추상 클래스와 인터페이스의 차이
    • 추상 클래스는 상속(extends) , 인터페이스는 구현(implements)
    • 인터페이스를 구현하는 클래스는 인터페이스의 모든 메서드를 구현해야함(오버라이딩 강제성)
    • 추상 클래스 단일 상속만 허용, 인터페이스는 다중 구현 허용