2 minute read

1. 내부클래스 Inner Class (정적 중첩클래스 Nested Class)

  • 이너 클래스는 하나의 클래스로, 클래스나 인터페이스 내부에서 선언한다. 코드를 더 읽기 쉽고 오래 유지하기 위해, 논리적인 그룹과 인터페이스들에서 사용한다.
  • 이너 클래스는 개인적인 데이터 멤버와 메소드를 포함하는 외부 클래스의 모든 멤버들에 접근할 수 있다.
  • 이너 클래스는 중첩 클래스의 한 부분으로 정적 중첩 클래스는 이너 클래스이다.
  • 내부 클래스는 외부 클래스를 제외한 다른 클래스에서 잘 사용되지 않는 것이어야 한다.

    • 장점
      • 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근 가능
      • 코드의 복잡성을 줄임(Encapsulation)
      • Event Handling 이벤트 처리에 용이

✏️멤버 이너 클래스 member class

  • 멤버 면수와 동일한 위치에 선언된 내부 클래스
  • static 예약어가 붙은 static 멤버와 instance 멤버로 나뉨
  • 동일한 클래스 뿐 아니라 다른 클래스에서도 활용 가능
  • 클래스의 멤버 변수와 성격이 비슷함

✏️익명 이너 클래스 non-named class

  • 클래스의 선언과 객체의 생성을 동시에 하는 이름없는 클래스(일회용)
  • new 예약어 뒤에 명시된 클래스가 기존의 클래스인 경우, 자동적으로 이 클래스의 자식 클래스가 됨
  • 이름이 없는 지역 냅 클래스는 추상 클래스의 객체를 내부 클래스 형태로 생성할 때 자주 사용

✏️ 지역 이너 클래스 local class

  • 메소드 안에서 생성되는 클래스로 선언된 영역 내부에서만 사용 가능

2. Event Handling Methods

  • Event : 행위에 대한 결과

    - ex)   
      1. 어떤 버튼을 눌렸을 때 경고 메세지가 나타나는 행위
      2. 프레임의 X버튼을 눌렸을 때 프레임이 종료되는 일련의 행위  
      
    - AWT와 같은 사용자 인터페이스에서는 event가 없으면 완벽한 프로그램이 X  
      
    - import java.awt.event.*을 선언해야 함
    
  • Event class
    • 리스너 인터페이스 listener interface : 다중 상속

    • 어댑터 클래스 adapter class : 단일 상속, 필요없는 매소드를 재정의할 필요 없다.

    • 이벤트 클래스 event class : 리스너나 어댑터 클래스 내부의 멤버 메소드의 매개변수로 사용되며 실제 작업이 처리되는 부분 담당

  • Event Handler : 이벤트가 발생되면 발생된 이벤트를 catch하고 처리하는 것

3. 예외처리 Exception Handling

  • 에러가 발생했을 때 에러를 처리하여 프로그램이 계속될 수 있도록 하는 것이다.
  • 프로그램을 지우는 것 보다, 예외를 처리하여 프로그램을 계속 실행시키도록 할 수 있다.

      C에서의 예외처리)  
    
      - signal 함수를 사용하거나 함수의 리턴 값을 확인
    	
      - 비정상적 상황을 감지하면, 보통 함수는 0을 음수 혹은 0을 리턴
    	
      - 비정상적 상황을 처리하기 위해, 리턴 값을 꼭 확인해야함
    	
      - 에러 number로 어떤 종류의 에러인지 알 수 있음	
    
    • Error : 응용 소프트웨어의 에러
      Failure : 시스템 소프트웨어의 에러 
      Fault : 하드웨어의 에러

✏️자바의 예외처리 방법

  • try-catch문 : try문 실행, 예외 발생 시 catch로 넘어가 예외처리
    • try에서 예외를 발생시킬 수 있는 함수를 호출.예외가 발생하면 catch로 넘어감 (여러개의 catch 문이 있을 수 있음)
    • finally : try-catch 예외처리 마지막에 무조건 수행되는 문장
  • throw : 특정 상황에 예외를 발생시킴, try 함수를 시행할 때 영향을 줌
    • throws : 예외를 선언하고 상위 메소드로 처리
    • Exception은 자바에서 제공할 수도 있고 개발자가 정의할 수도 있음
  • 자바의 예외처리)
    1. 발생할 수 있는 예외를 정의한다.

    2. 발생할 수 있는 예외를 처리하기 위한 클래스를 정의한다.
      -> Class MyTypeException extends Exception { … }

    3. throws를 사용하여 예외가 발생할 수 있는 메소드의 상위 메소드에 예외를 선언한다.
      -> method_name () throws MyTypeException { … }

    4. throw를 사용하여 예외 클래스를 생성한다
      -> 예외가 발생한 메소드에서 예외 발생 조건을 확인하고 예외가 발생했다면 대응하는 예외 클래스가 생성된다.
      -> throw new MyTypeException();

    5. 위의 예외가 발생할 부분에 try-catch문을 선언하여 실행한다.
      -> try{
      method_name();
      } catch (MyTypeException) {..예외에 대한 실행 코드}