Dorothy_YANG
With Dorothy
Dorothy_YANG
전체 방문자
오늘
어제
  • 분류 전체보기 (279)
    • Hi, I'm Dorothy 🕵️‍♂️ (21)
      • Slowly but Surely (18)
      • IT certifications (3)
    • 🤯TIL (80)
      • HTML & CSS (2)
      • Javascript & jQuery (13)
      • React (13)
      • C언어 (1)
      • JAVA (22)
      • Python (2)
      • Oracle SQL (10)
      • My SQL (5)
      • Spring (12)
    • 💻Programmers (17)
    • 🏫 Open API_JAVA (101)
    • 🌎 Project (10)
      • Shopping (10)
    • 💥 Error (24)
    • ⚙ Setting (23)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 비쥬얼스튜디오코드
  • 코딩앙마
  • 서버등록
  • 기간설정
  • 오류해결
  • 창초기화
  • googlecolaboratory
  • 이것이자바다
  • 독학후기
  • 콜라보레이토리
  • 연습문제
  • CSS
  • oracle
  • 백준
  • 노마드코더
  • Database
  • 시작일종료일
  • spring
  • Javascript
  • AllArgsConstructor
  • Eclipse
  • 파이썬온라인
  • java
  • colaboratory
  • SQL
  • SQLD합격
  • SQLD합격후기
  • sql기간
  • HTML
  • 기간쿼리

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dorothy_YANG

With Dorothy

[40일차] 인터페이스 상속 / 디폴트 메소드와 인터페이스 확장 / 중첩 클래스 / 익명 객체 / 예외처리
🏫 Open API_JAVA

[40일차] 인터페이스 상속 / 디폴트 메소드와 인터페이스 확장 / 중첩 클래스 / 익명 객체 / 예외처리

2022. 9. 20. 22:01
728x90

20220919(월)

  • 목차
    - 인터페이스 상속
    - 디폴트 메소드와 인터페이스 확장
    - 중첩 클래스
    - 익명 객체
    - 예외처리

< 인터페이스 상속 >

  • 목적 : 클래스를 만들어서 객체를 생성하고자 함
    ➡ public interface 하위인터페이스 extends 상위인터페이스 1, 상위인터페이스 2 { ... }

  • 하위 인터페이스 구현 클래스는 아래 추상 메소드를 모두 재정의 해야 함
    (하위 인터페이스의 / 상위 인터페이스 1의 / 상위 인터페이스 2의 추상메소드)

  • 인터페이스 자동 타입 변환
    : 해당 타입의 인터페이스에 선언된 메소드만 호출 가능

✔ 클래스끼리 상속 (단일 상속)
    class 자식클래스 extends 부모클래스 { }
✔ 인터페이스끼리 상속 (다중 상속 가능) 🥰
    interface 자식인터페이스 extends 부모인터페이스1, 부모인터페이스2 { }
✔ 클래스와 인터페이스 상속 (다중 상속 가능) 🥰
    class 자식클래스 implements 부모인터페이스1, 부모인터페이스2 { }
✔ (X) 말이 안된다.. 🥵
    interface 인터페이스 implements 클래스 { }
    왜? ➡ 실행문 없는 인터페이스가 클래스를 상속받는다? 말이 안됨;

 


< 디폴트 메소드와 인터페이스 확장 >

  • 인터페이스에서 디폴트 메소드를 허용한 이유
    기존 인터페이스를 확장해서 새로운 기능을 추가하기 위함

  • ex) MyInterface에 기능을 추가해야해서 추상 메소드를 추가했는데 A에서 문제발생
    ➡ A를 수정할 여건이 안된다면 MyInterface에 디폴트 메소드를 선언해야 함

 


< 중첩 클래스 >

  • 중첩 클래스
    클래스 내부에 선언한 클래스
    ➡ 두 클래스의 멤버들을 서로 쉽게 접근 가능, 코드의 복잡성 줄일 수 있음🥰
    (어떤 클래스는 특정 클래스와 관계를 맺음 ➡ 클래스 내부에 선언하는 것이 좋다.)
선언 위치에 따른 분류 선언 위치 설명
멤버 클래스 인스턴스 멤버 클래스 class A {
     class B { ... }
}
A객체를 생성해야만 사용할 수 있는 B 중첩 클래스
(static 멤버 사용불가)

객체 생성 : ex) A a = new A();
A.B b = a.new B();
정적 멤버 클래스 class A {
     static class C { ... }
}
A 클래스로 바로 접근 가능한 B 중첩 클래스
(모든 멤버 사용가능)

객체 생성 : A.C c = new A.C();
로컬 클래스 class A {
     void method() {
          class B { ... }
     }
}
method()가 실행할 때만 사용할 수 있는 B 중첩 클래스
(메소드 내에서 선언가능)

로컬 클래스 객체 생성을 위한 메소드 호출 : 
a.method();

 


< 익명 객체 >

  • 특징
    - 이름이 X  객체, 단독 생성 불가능
    - 클래스를 상속하거나 인터페이스를 구현해야만 생성할 수 있음

  • 사용 위치
    필드의 초기값, 로컬 변수의 초기값, 매개변수의 매개값으로 주로 대입
    UI 이벤트 처리 객체나, 스레드 객체를 간편하게 생성할 목적으로 주로 활용

  • 익명 객체에 새롭게 정의된 필드와 메소드
    익명 객체 내부에서만 사용
    외부에서는 익명 객체의 필드와 메소드에 접근할 수 없음
    이유: 익명 객체는 부모 타입 변수에 대입되므로 부모 타입에 선언된 것만 사용 가능

 


< 예외 처리  =  오류 처리 >

  • 에러와 예외 구분, 예외의 종류
에러 (Error) 예외 (Exception) = 오류
하드웨어의 잘못된 동작 또는 고장으로 인한 오류

에러가 발생되면 프로그램 종료

➡ 정상 실행 상태로 돌아갈 수 없음


사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인한 오류
예외가 발생되면 프로그램 종료
예외 처리 추가하면 정상 실행 상태로 돌아갈 수 있음
(1) 일반(컴파일 체크) 예외(Exception)
예외 처리 코드 없으면 컴파일 오류 발생
(2) 실행 예외(RuntimeException)
예외 처리 코드를 생략하더라도 컴파일이 되는 예외
➡ 경험 따라 예외 처리 코드 작성 필요

 

  • JAVA에서 자주 발생하는 실행 예외 
(1) Null Pointer Exception (NPE) (2) Array Index Out Of Bounds Exception
객체 참조가 없는 상태 
 Heap 영역에 데이터가 없어서 접근할 수 없는데
접근 시도를 했기에
역추적해서 발견해야 함!

우리가 작성한 파일명 클릭하기!!
클릭 시 10라인을 가르킨다.
(오류데이타 ➡ 예외는 NumberFOrmatException 클래스)
 배열에서 인덱스 범위초과하여 사용할 경우 발생

*메서드는 문법적으로 예외처리 관련문법을
반드시 작성해야 하는 규칙을 가지고 있다.
(3) Number Format Exception (4) Class Cast Exception
숫자로 변환될 수 없는 문자가 숫자로 변환할 경우

Integer.parseInt(String s) : 문자열을 정수로 변환 후 리턴
Double.parseDouble(String s) : 문자열을 실수로 변환 후 리턴
타입 변환이 되지 않을 경우 발생

instance of 연산의 결과가 true 이면
좌항 객체를 우항 타입으로 변환 가능

 

  • 예외 처리 코드
    : 예외가 발생했을 경우 프로그램의 갑작스러운 종료를 막고, 정상 실행을 유지할 수 있도록 처리하는 코드
    : 개발자의 경험을 바탕으로 작성해야 함

    ✨ try - catch - finally 블록 
          try {
                // 예외 발생 가능 코드
          } catch(예외 클래스 e) {
                // 예외 처리
          } finally {
                // 항상 실행;
          }
  • 예외 관련 문법
    1) 예외전가 : 상위 개념에게 넘기는 의미
    2) 예외처리구문 : 자신이 처리하는 의미
728x90
저작자표시

'🏫 Open API_JAVA' 카테고리의 다른 글

[42일차] String 클래스 / String Tokenizer 클래스 / String Buffer, String Builder 클래스 / 정규 표현식과 Pattern 클래스 / Arrays 클래스 / 포장(Wrapper) 클래스 (API 클래스)  (0) 2022.09.22
[41일차] 자동 리소스 닫기 / 사용자 정의 예외와 예외 발생 / java.lang과 java.util 패키지 / Object 클래스 / Tomcat 설치  (0) 2022.09.21
[39일차] 추상 클래스 / 추상 메소드 / 인터페이스  (0) 2022.09.19
[38일차] 필수 이론 정리 / 오라클 테이블 생성 / 매개 변수의 다형성  (0) 2022.09.19
[37일차] final / 접근 제한자 / 타입 변환과 다형성 / Oracle Database 설치  (0) 2022.09.15
    '🏫 Open API_JAVA' 카테고리의 다른 글
    • [42일차] String 클래스 / String Tokenizer 클래스 / String Buffer, String Builder 클래스 / 정규 표현식과 Pattern 클래스 / Arrays 클래스 / 포장(Wrapper) 클래스 (API 클래스)
    • [41일차] 자동 리소스 닫기 / 사용자 정의 예외와 예외 발생 / java.lang과 java.util 패키지 / Object 클래스 / Tomcat 설치
    • [39일차] 추상 클래스 / 추상 메소드 / 인터페이스
    • [38일차] 필수 이론 정리 / 오라클 테이블 생성 / 매개 변수의 다형성
    Dorothy_YANG
    Dorothy_YANG
    Slowly but Surely, 비전공 문과생의 개발공부

    티스토리툴바