오늘 ONEUL
오늘의 개발
오늘 ONEUL
전체 방문자
오늘
어제
  • 오늘의 개발 (248)
    • 📝 TIL (121)
    • 💡 Projects (6)
      • 드로잉 게임 [눈치 코치 캐치!] (4)
      • 익명고민상담소 [대나무숲] (2)
    • 🌎 Web (47)
      • Spring (3)
      • Java (14)
      • JavaScript (16)
      • CSS (10)
      • HTML (4)
    • 📚 Database (7)
    • 👾 Trouble Shooting (3)
    • 📊 Algorithm&SQL (39)
    • 😺 Git (1)
    • 📖 Books (7)
      • 자바 객체 지향의 원리와 이해 (7)
    • 📁 ETC (2)
    • 되돌아보기 (15)

블로그 메뉴

  • 😺 Github
  • 🍀 NAVER Blog

인기 글

최근 댓글

최근 글

태그

  • Java
  • 알고리즘
  • 자바스크립트
  • 자바
  • 프로그래머스
  • Til
  • Algorithm
  • MySQL
  • 항해99
  • JavaScript

티스토리

hELLO · Designed By 정상우.
오늘 ONEUL

오늘의 개발

📝 TIL

[TIL] Java 인터페이스, 내부클래스, 예외처리

2022. 5. 20. 21:34

✍ Today I Learned

[클래스 다시 짚고 넘어가기]

  • 클래스는 개념을 코드로 작성한 것이다.
  • 개념은 정적인 것과 동적인 것으로 구분된다.
  • 정적인 것은 특정 시점의 상태 값이다.
  • 동적인 것은 상태 값을 변경하는 기능이다.
  • 생성자는 클래스를 사용하기 위한 출입구이다.
  • 생성자를 통해서 클래스가 보유한 모든 리소스에 접근한다.
  • 클래스의 변수와 메서드는 특정 목적을 위해 설계된 리소스이다.
  • 클래스는 new 연산자와 생성자를 통해 물리적으로 인스턴스가 된다.
  • 인스턴스란 메모리상에 주소 값을 갖는 데이터이다.
  • 모든 리소스의 접근은 인스턴스의 주소 값으로부터 시작한다.
  • 데이터의 인풋(파라미터)과 아웃풋(리턴)의 이해를 해보자!
  • 클래스를 생성할 땐 어떤 값이 필요하고, 무엇을 위해 변경할 건지 생각하자!

 

[추상 메서드의 한계]

  • 추상 클래스는 클래스의 특징을 가지므로 단일 상속만 가능하다.
  • 추상 클래스 내부에 추상 메서드와 일반 메서드 모두 존재하므로 개념이 모호하다.
  • 인스턴스로 만들지 못한다면 굳이 일반 클래스의 속성을 따를 필요가 있을까?

 

[인터페이스 Interface]

  • 인터페이스(interface)란? 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미한다.
  • 자바에서는 클래스를 통한 다중 상속은 지원하지 않고, 인터페이스를 통해 다중 상속을 지원하고 있다.
  • interface 키워드를 사용하여 선언하고, implements 키워드를 사용하여 구현한다.
  • 추상 클래스는 추상 메서드뿐만 아니라 생성자, 필드, 일반 메서드도 포함할 수 있지만, 인터페이스는 오로지 추상 메서드(public abstract)와 상수(public static final)만을 포함할 수 있다.
  • 추상 클래스와 마찬가지로 인스턴스를 생성할 수 없다.
  • 인터페이스 extends 인터페이스처럼 인터페이스들 간의 상속도 가능하다.
  • 인터페이스에 제시된 규격에 따라 클래스가 구체화된 객체로 만들어진다.
  • 추상을 왜 할까?
    • 개념을 더 명확히 하기 위해서이다.
  • 인터페이스는 왜 변수 사용이 안될까?
    • 규격이기 때문에 변하면 안 된다.
    • 그래서 추상 메서드와 상수(final)만 가능하다.
  • 인터페이스의 장점은?
    • 프로젝트의 규모가 클 때, 일관되고 정형화된 개발을 위한 표준화가 가능하다.
    • 클래스의 작성과 인터페이스의 구현을 동시에 진행할 수 있어 개발 시간이 단축된다.
    • 클래스의 관계를 인터페이스로 연결하면 클래스마다 독립적인 프로그래밍이 가능하다.
  • 인터페이스와 추상 클래스의 차이점?
    • 추상 클래스는 미완성 설계도, 인터페이스는 기본 설계도
    • 사용 목적에 차이가 있다. 자바의 클래스는 단일 상속만 가능하기 때문에 클래스의 구분은 추상 클래스의 상속을 통해 해결하고, 할 수 있는 기능들은 인터페이스로 구현한다.
    • 참고자료 - [JAVA}추상클래스 VS 인터페이스 왜 사용할까? 차이점, 예제로 확인 :: 마이자몽

추상클래스 VS 인터페이스 도식화 (출처:마이자몽)

 

[내부 클래스 Inner Class]

  • 내부 클래스(inner class)란? 하나의 클래스 내부에 선언된 또 다른 클래스를 의미한다. 외부 클래스와 긴밀한 관계를 맺고 있을 때 선언할 수 있다.
  • 내부 클래스의 장점은?
    • 내부 클래스에서 외부 클래스의 멤버에 손쉽게 접근할 수 있다.
    • 서로 관련 있는 클래스를 논리적으로 묶어서 표현함으로써, 코드의 캡슐화를 증가시킨다.
    • 외부에서는 내부 클래스에 접근할 수 없으므로, 코드의 복잡성을 줄일 수 있다.
  • 내부 클래스를 언제 사용할까?
    • 내부 정보 값이 절대 외부에 노출되면 안 될 때
    • 연쇄적인 호출이 일어나야 할 때

 

[익명 클래스 Anonymous Class]

  • 익명 클래스(anonymous class)란? 다른 내부 클래스와 달리 이름을 가지지 않는 클래스를 의미한다.
  • 선언과 동시에 객체를 생성하므로, 단 하나의 객체만을 생성하는 일회용 클래스이다. 따라서 생성자를 선언할 수 없다.
  • 매우 제한적인 용도에 사용되며, 구현해야 하는 메서드가 매우 적은 클래스를 구현할 때 사용된다.
저작자표시 비영리 변경금지 (새창열림)

'📝 TIL' 카테고리의 다른 글

[TIL] Java ArrayList, HashSet, HashMap, Generic  (0) 2022.05.24
[TIL] Java 피카츄 게임, 웹 서비스 프로그램  (0) 2022.05.23
[TIL] Java 빌트인 패키지, 접근제어자, 상속, 오버라이딩, 다형성, 추상 클래스  (0) 2022.05.19
[TIL] Java 뱅킹, 호텔, 메모리구조, 캡슐화  (0) 2022.05.18
[TIL] Java 뱅킹 시스템, 호텔 객실 관리 프로그램  (0) 2022.05.17
    오늘 ONEUL
    오늘 ONEUL
    Backend Engineer ㅣ 어제보다 나은 오늘, 재밌는 건 오늘부터!

    티스토리툴바