2 minute read

자바프로그래밍 - 4

  • 상속과 다형성
  • 가상 메서드 오버라이딩
  • 다운 캐스팅
  • 추상 클래스



클래스와 객체 - 6. 정보 은닉

  • 접근 제어자
    • public : 외부 클래스에서 제한 없이 접근 가능
    • private : 외부 클래스에서 접근 불가, ‘동일 클래스’에서만 OK!
    • protected : 동일 패키지, ‘상속 관계의 클래스’에서 접근 가능
    • 없는 경우 : defualt, 동일 패키지 안에서는 접근 가능



상속과 다형성 - 1. 상속?

  • 개념
    • ‘하위 클래스’가 ‘상위 클래스’의 것을 물려받음

      상위에서 선언한, 구현한 것들 그대로 가져다 씀

    • ‘상위 클래스’가 ‘하위 클래스’를 포괄

      ex. 동물 > 조류 > 독수리

  • 문법
    • ex. Class Human extends Mammal { ... }

      ‘사람’클래스가 ‘포유류’클래스를 상속한다.



상속과 다형성 - 2. 상속에서 클래스 생성과 형 변환

  • Super
    • 하위 클래스 생성자 호출할 때, ‘Super()’ 즉 상위 클래스 생성자 먼저 호출
  • 다형성
    • 따라서, 하위 클래스는 ‘하위 클래스’형이면서 동시에 ‘상위 클래스’형
    • ex. Customer man1 = new VIPCustomer();
      • 상위 클래스 Customer형으로 선언한 변수 ‘man1’
      • ‘man1’의 인스턴스형은 하위 클래스 VIPCustomer



상속과 다형성 - 3. 메서드 오버라이딩

  • 오버라이딩 : 메서드 (재정의)덮어쓰기
    • 표시: @Override ...
    • 애노테이션(@): ‘주석’이라는 의미, 컴파일러에게 특정한 정보를 제공
애노테이션 설명
@Override 재정의된 메서드라는 정보 제공
@FunctionInterface 함수형 인터페이스라는 정보 제공
@Deprecated 이후 버전에서 사용 안할 수 있는 변수, 메서드에 사용
@SuppressWarnings 특정 경고가 나타나지 않도록 함
  • 가상 메서드(중요!)
    • 전제1. 상위 클래스 A > 하위 클래스 B 상속
    • 전제2. A example = new B(); 생성
    • 전제3. 상위 클래스에 메서드1, 하위 클래스에 (재정의된)메서드1 존재
      • 적용 우선 순위 : (재정의)메서드1 > 메서드1 > 최상위(Object)
      • 재정의된 메서드1이 곧 가상 메서드!

overriding



상속과 다형성 - 4. 다형성

  • 다형성 테스트(중요!) 교재 p.260
    polymorphism

  • 장점
    • 프로그램의 확장성 up

      만들어 놓은 자료형에 같은 타입 계속 추가

    • 유지보수 편의성 up

      공통부분은 상위에서, 특정부분만 하위에서

  • 참고

    상속은 하나의 클래스만! (다중 상속 불가)



상속과 다형성 - 5. 다형성 활용

  • 교재 p.267~268 코드 확인



상속과 다형성 - 6. 다운 캐스팅과 instanceof

  • 하위 클래스로의 형 변환
    • 전제1. 상위 클래스 A > 하위 클래스 B 상속
    • 전제2. A example = new B(); 생성
    • 전제3. 하위 클래스 B에만 있는 메서드2
      • example.메서드2 사용 가능? => 일단 불가!
      • 다운 캐스팅 필요! ‘( ): 캐스팅 연산자’

downCasting



추상 클래스 - 1. 추상 클래스(abstract class)

  • 문법 : ex. public abstract class Computer
    • 구현 코드가 없는(함수 몸체가 없는) ‘추상 메서드’를 반드시 1개 이상 포함
    • 추상 클래스 내에서는 메서드 선언도 abstract 표시!
  • 메서드 구현되어 있지 않으므로, 인스턴스로 생성 불가!!
  • 추상 클래스 왜 쓰나?
    • 반드시 필요한 기능, but 하위 클래스마다 내용을 다르게 해야 할 경우
    • 상위에서 추상 메서드 선언만!(구현X)
    • 하위에서 오버라이딩, 즉 재정의!(안하면 오류남)



추상 클래스 - 2. 템플릿 메서드

  • 정해진 틀이 있는 메서드 (like 디자인 패턴)
    • final 선언하여, 하위 클래스에서도 변경 불가

templateMethod

  • 템플릿 메서드의 역할
    • 실행 순서(시나리오)가 정해져 있다!!



추상 클래스 - 3. final 예약어

사용 위치 설명
변수 final 변수는 상수를 의미
메서드 final 메서드는 하위에서 재정의 불가
클래스 final 클래스는 상속 불가






공지

  • 사회적 거리두기 해제에 따라 의무 집체교육 계획중?



과제, ~5/9(월)까지 제출

범위: 책 -> p.231~312 까지

  1. 복습/연습문제
    • ‘1분 복습’, ‘연습 문제’의 문제&답, ‘타이핑’
    • ‘나혼자 코딩’, ‘타이핑, 디버그’

      제출파일: 이형록_220428_과제제출.txt

  2. 실습코드
    • 이클립스에 타이핑 (패키지, 클래스 동일하게)

      제출파일: 이형록_220428_실습코드.txt (이클립스에서 작성한 내용을 복사)

  3. 보충자료 확인



다음 강의 준비








nice!!

Updated: