18장 - 이제 기본 문법은 거의 다 배웠으니 정리해 봅시다

객체지향 관련 용어 목록

  • 클래스
    • 상태와 행위를 갖는 자바의 기본 단위
  • 상태(state)와 행위(behavior)
    • 어떤 사물을 나타낼 떄에는 상태와 행위로 구분하여 표시하는 것이 가능하다.
      "상태"는 클래스나 인스턴스 변수로, "행위"는 메소드로 표현할 수 있다
  • 캡슐화 (Encapsulation)
    • 연관된 "상태"와 "행위"를 결정하는 기능을 묶어 주는 것
    • 클래스 밖에서 접근 가능한 대상을 제한하는 정보 은닉이 가능하다
    • 하나의 객체를 위한 코드가, 다른 객체를 위한 코드와 무관하게 수행할 수 있는 모듈화가 가능해진다.
  • 메시지
    • 메소드에서 다른 메소드를 호출할 때 전달하는 값 = 매개 변수
  • 객체 (Object)
    • 클래스는 사물의 단위를 의미하고, 객체는 각 사물을 의미한다
  • 상속 (Inheritance)
    • 부모에 선언된 변수와 메소드에 대한 사용권을 갖는 것
    • 클래스 선언시 extends를 사용하여 확장하거나, implements를 사용하여 구현한 경우
  • 다형성 (Polymorphism)
    • 부모 클래스에서 파생된 자식 클래스들의 기능이 각기 다를 수 있다는 것
  • Overriding
    • 부모 클래스에 선언되어 있는 메소드와 동일한 선언을 갖지만 구현이 다른 것
    • 다형성을 제공하는 하나의 방법
  • Overloading
    • 메소드의 이름은 동일해도, 매개 변수들을 다르게 하는 것

자바의 주석문

  • 한 줄 주석
   // 주석 처리 내용 
  • 블록 주석
  /* 주석 시작 
  주석 끝 */
  • javadoc을 위한 주석
    • API 문서에 설명을 표시할 목적으로 사용
  /** 주석 시작
  해당 클래스나 메소드의 설명이 있어야 함
  주석 끝 */

package와 import

  • package
    • 클래스들을 그룹화하기 위한 단위
    • 유의 사항
      • 패키지는 package로 시작하며 하위 패키지로 내려갈 때마다 . 을 찍어준다
      • 반드시 소스의 가장 첫 줄에 존재한다
      • 패키지 이름에 자바 예약어가 포함되면 안 된다
      • 모두 소문자로 구성하는 것이 일반적이다
      • 일반적인 패키지는 java나 javax로 시작하면 안 된다
  • import
    • 다른 패키지에 있는 클래스를 사용하기 위한 문장
    • 다른 클래스에 static으로 선언되어 있는 접근 가능한 변수를 참조하려면
      import static을 사용한다.
    • 하나의 패키지 내에 있는 모든 클래스를 참조하려면 *을 사용한다

자바에서 사용되는 타입의 종류

  • 기본 자료형
    • 정수형 : byte, short, int, long, char
    • 소수형 : float, double
    • 기타 : boolean
  • 참조 자료형
    • 기본 자료형을 제외한 모든 타입
    • 모든 클래스는 참조 자료형이라고 생각하면 된다
  • 기본 자료형과 참조 자료형 차이
    • 초기화 할 때 : 기본 자료형은 바로 지정하면 되지만, 참조 자료형은 일반적으로 new와 생성자를 지정하여 객체를 생성
    • 메소드를 호출할 떄의 매개 변수 : 기본 자료형 및 참조 자료형 모두 값을 전달하지만, 참조 자료형 안에 있는 변수들은 참조 주소를 전달
  • 특수한 참조 자료형 String
    • String 클래스는 new를 이용하여 객체를 생성할 필요가 없는 특수한 클래스다.그리고 +연산까지 가능한 유일한 클래스다

변수의 종류

  • 지역 변수
    • 지역 변수를 선언한 곳에서부터 생명이 시작되고, 지역 변수를 선언한 중괄호가 끝나면 소멸
  • 매개 변수
    • 메소드가 호출될 때 생명이 시작되고, 메소드가 끝나면 소멸 (호출한 메소드에서 넘겨준 참조 자료형은 그대로 살아 있음)
  • 인스턴스 변수
    • 객체가 생성될 때 생명이 시작되고, 그 객체를 참조하고 있는 다른 객체가 없으면 소멸
  • 클래스 변수
    • 클래스가 생성될 때 생명이 시작되고, 자바 프로그램이 끝날 때 소멸

접근 제어자

  • public
    • 누구나 접근 가능
  • protected
    • 같은 패키지 내에 있거나 상속받은 경우에만 접근 가능
  • (package-private)
    • 아무런 접근 제어자를 적어주지 않을 때
    • 같은 패키지 내에 있을 떄만 접근 가능
  • private
    • 해당 클래스 내에서만 접근 가능

클래스, 인터페이스, abstract 클래스, enum 클래스

  • 클래스 파일(.class)이 되는 타입의 종류
    • 클래스
    • 인터페이스
    • abstract 클래스
    • enum 클래스
    • 어노테이션 선언 클래스
  • 인터페이스
    • 어떤 메소드가 존재해야 하는지에 대한 선언만 되어 있다
    • 절대로 구현되어 있는 메소드가 있으면 안 된다
    • 인터페이스를 구현하는 클래스에서는 implements를 사용하여 선언
  • abstract 클래스
    • 구현되어 있는 메소드가 있어도 상관 없다.
    • abstract로 선언된 메소드가 1개 이상일 경우에는 반드시 abstract 클래스로 선언해야 한다
    • abstract로 선언된 메소드는 절대로 구현되어 있어서는 안 된다
    • abstract 클래스를 확장하는 클래스에서는 extends를 사용하여 선언한다
  • 클래스
    • 인터페이스나 abstract 클래스와 다르게 모든 메소드가 구현되어 있어야 한다
  • enum 클래스
    • 상수를 열거하기 위한 용도로 사용
    • enum 클래스의 상수는 이름만 정의해도 된다.
    • 별도의 생성자를 만들어 각 상수의 값을 지정할 수 있다.
    • enum에 메소드를 만들어 기능 추가 가능
  • 어노테이션 선언 클래스
    • 대상(@Targert)과 적용 범위(@Retention)을 명시하는 것이 좋다
    • @interface를 사용하여 어노테이션이라는 것을 명시한다.

메소드

  • 클래스의 행위를 처리하는 데 사용됨
    • public void method(String param, int ... params){}
      params라는 여러 개의 int 타입을 콤마로 구분하여 매개 변수로 지정 가능

상속

  • 상속 관계가 발생했을 때 생성자, 메소드, 변수 정리
  • 생성자
    • 자식 클래스의 생성자가 호출되면 자동으로 부모 클래스의 매개 변수가 없는 기본 생성자가 호출됨. 명시적으로 super()라고 지정 가능
    • 부모 클래스의 생성자를 명시적으로 호출하려면 super()를 사용하면 된다
  • 메소드
    • 부모 클래스에 선언된 메소드들이 자신의 클래스에 선언된 것처럼 사용 가능
      (private 제외)
    • 부모 클래스에 선언된 메소드와 동일한 시그니처를 사용함으로써
      메소드 overriding이 가능하다
    • 부모 클래스에 선언되어 있지 않은 이름의 새로운 메소드 선언이 가능
  • 변수
    • 부모 클래스에 private로 선언된 변수를 제외한 모든 변수 사용 가능
    • 부모 클래스에 선언된 변수와 동일한 이름을 가지는 변수 선언 가능 (권장X)
    • 부모 클래스에 선언되어 있지 않는 이름의 변수 선언 가능

예외 처리

  • try-catch-finnally
    • 예외 처리 문장
  • 자바에서 사용하는 예외의 종류
    • checked exception
      • try-catch로 묶어 줘야하는 예외
      • 컴파일시 예외 처리 여부를 체크
    • error
      • 자바 프로세스에 영향을 주는 예외
      • 실행시 발생
    • runtime exception 혹은 unchecked exception
      • try-catch로 묶지 않아도 컴파일시 체크 하지 않는 예외
      • 실행시 발생하는 예외
  • throw
    • 예외 객체를 던지기 위해 사용
    • try 블록 내에서 예외를 발생시킬 경우에는 throw라는 예약어를 적어 준 뒤 예외 객체를 생성하거나, 생성되어있는 객체를 명시
  • throws
    • 예외가 발생하면 던질 것이라고 메소드 선언시 사용
    • 해당 메소드에서 선언한 예외가 발생하면 호출한 메소드로 예외가 전달된다
    • 두 가지 이상의 예외는 콤마로 구분한다
  • catch 블록에서 예외를 throw할 경우에는 메소드 선언의 throws 구문에 해당 예외가 정의되어 있어야 한다.
  • throw한 예외 클래스가 catch 블록에 선언되어 있지 않거나, throws 선언에 포함되어 있지 않으면 컴파일 에러가 발생

Object 클래스

  • 모든 클래스의 가장 최상위 부모 클래스
  • 이 클래스에 선언되어 있는 모든 메소드들은 자바에서 사용하는 모든 클래스에서 사용할 수 있다
  • 주요 메소드
    • clone()
    • equals()
    • finalize() : 현재 객체가 더 이상 쓸모 없어졌을 때 가비지 컬렉터에 의해 이 메소드가 호출된다.
    • getClass() : 현재 객체의 Class 클래스의 객체를 리턴
    • hashCode() : 객체에 대한 해시 코드 값을 리턴
    • String toString() : 객체를 문자열로 표현하는 값 리턴
    • wait(), notify(), notifyAll() : 쓰레드 처리시 사용하는 메소드

String 클래스

  • new를 사용하여 객체를 생성할 수 있는 유일한 클래스
  • 더하기 연산 가능
    더하기 연산을 할 경우 String클래스는 기존 문자열은 버리고 새로운 객체 생성
  • StringBuffer와 StringBuilder 클래스
    • String의 단점을 보완하기 위해 제공되는 클래스들
    • StringBuffer는 쓰레드에 안전하고, StringBuilder는 그렇지 못하다
    • append() 메소드를 사용하여 문자열을 더할 수 있다
    • 만약 문자열을 더하면 컴파일러에서 StringBuilder 클래스로 변환

좋은 웹페이지 즐겨찾기