차례

Chapter 7 객체지향 프로그래밍 II : 스터디 1주차

중분류 소분류
3. package와 import 3.1 패키지(package)
3.2 패키지의 선언
3.3 import문
3.4 import문의 선언
4. 제어자(modifier) 4.1 제어자란?
4.2 static - 클래스의, 공통적인
4.3 final - 마지막의, 변경될 수 없는
4.4 생성자를 이용한 final 멤버변수 초기화
4.5 abstract - 추상의, 미완성의
4.6 접근 제어자(access modifier)
4.7 접근 제어자를 이용한 캡슐화
4.8 생성자의 접근 제어자
4.9 제어자(modifier)의 조합
5. 다형성(polymorphism) 5.1 다형성이란?
5.2 참조변수의 형변환
5.3 instanceof연산자
5.4 참조변수와 인스턴스의 연결
5.5 매개변수의 다형성
5.6 여러 종류의 객체를 하나의 배열로 다루기
6. 추상클래스(abstract class) 6.1 추상클래스란?
6.2 추상메서드(abstract method)
6.3 추상클래스 작성
7. 인터페이스(interface) 7.1 인터페이스란?
7.2 인터페이스의 작성
7.3 인터페이스의 상속
7.4 인터페이스의 구현
7.5 인터페이스를 이용한 다중상속
7.6 인터페이스를 이용한 다형성
7.7 인터페이스의 장점
7.8 인터페이스의 이해


Chapter 10 내부 클래스 : 스터디 1주차(챕터 순서 유의!!)

중분류 소분류
1. 내부 클래스(inner class)란?  
2. 내부 클래스의 종류와 특징  
3. 내부 클래스의 선언  
4. 내부 클래스의 제어자와 접근성  
5. 익명 클래스(anonymous class)  


Chapter 8 예외처리(Exception Handling) : 스터디 1주차(챕터 순서 유의!!)

중분류 소분류
1. 예외처리(exception handling) 1.1 프로그램 오류
1.2 예외처리의 정의와 목적
1.3 예외처리구문 - try-catch
1.4 try-catch문에서의 흐름
1.5 예외 발생시키기
.6 예외 클래스의 계층구조
1.7 예외의 발생과 catch블럭
1.8 finally블럭
1.9 메서드에 예외 선언하기
1.10 예외 되던지기(exception re-throwing)
1.11 사용자정의 예외 만들기



참여인원

2명



스터디 준비

image

image



스터디 진행 방법

키워드를 화이트보드에 적은 후, 해당 키워드의 의미 또는 연관된 부분을 한 번씩 번갈아가며 마인드맵 형식으로 그려가며 설명



스터디 중 궁금했던 부분 정리

abstract class vs interface

  • abstract class

    • 미완성 클래스

    • 단일 상속 가능

    • 목적 : 상속받는 객체(클래스 / Object)에서 기능을 확장시키는 것 (즉, 클래스의 내용과 관련이 있음)

  • interface

    • 클래스는 아님

    • 다중 구현 가능

    • 목적 : 구현하는 객체(클래스 / Object)의 같은 행위(동작)을 보장하기 위함 (즉, 클래스의 내용과는 관련이 없음)


Java 8에서 추가된 interface 기능

  • Java 7까지의 Inteface의 메서드는 추상 메서드만 가능했었음(실행블록 없이)

  • Java 8에서 다음 기능들이 추가됨

    • 디폴트 메서드 / 정적 메서드 → 추상메서드와 경계가 모호해짐

    • 인터페이스의 구현체가 존재하지 않더라도 익명 구현 객체 사용 가능(람다식 이용)


private class에는 접근이 불가능할까 import가 불가능할까

  • 바로 아래 참고, private class는 없음


제어자를 사용할 수 있는 부분

  • 클래스

    • public, (default), final, abstract
  • 메서드

    • 모든 접근제어자, final, static, abstract
  • 필드

    • 모든 접근제어자, final, static
  • 지역변수

    • final
  • 초기화블럭

    • static


제어자의 조합에서 가능한 부분

  • 클래스에서 abstract과 final는 같이 사용할 수 없음(의미 충돌)

    • abstract 클래스 : 상속해서 사용해야 함

    • final 클래스 : 상속받을 수 없음

  • 메서드에서 abstract과 static는 같이 사용할 수 없음(의미충돌)

    • abstract 메서드 : 선언부만 있고 구현부가 없음

    • static 메서드 : 인스턴스 생성 없이 바로 사용할 수 있어야 함

  • 메서드에서 abstract와 private는 같이 사용할 수 없음(의미충돌)

    • abstract 메서드 : 다른 클래스에서 상속해서 오버라이딩해서 사용해야 함

    • private 메서드 : 자식 클래스에서 접근할 수 없음

  • 메서드에서 final과 private는 중복해서 쓰지 않아도 됨(의미 동일)

    • final 클래스 : 수정 불가 / 오버라이딩 불가

    • private 클래스 : 접근 불가 / 오버라이딩 불가


접근제어자의 접근 차이

  • public

    • 아래 영영 외의

    • 자식 클래스의 멤버

    • 같은 패키지의 멤버

    • 같은 클래스의 멤버

  • protected

    • 자식 클래스의 멤버

    • 같은 패키지의 멤버

    • 같은 클래스의 멤버

  • (default)

    • 같은 패키지의 멤버

    • 같은 클래스의 멤버

  • private

    • 같은 클래스의 멤버


Interface의 멤버의 접근제어자

  • Interface 멤버의 접근제어자는 무조건 public

  • 생략해도 (default)가 아닌 public!