DevJong12

22.05.16 F-Lab멘토링 본문

Java,Spring/F-Lab

22.05.16 F-Lab멘토링

Jong12 2022. 5. 18. 21:34
728x90

F-Lab의 3주차 멘토링을 받았던 질문들에 대해서 정리를 해놓고자 한다.

책을 많이 읽고 가야한다고 생각은 하는데 막상 쉽지가 않은 것 같다..

 

 

[동일성과 동등성]

동일하면 동등하지만 동등하다고 동일한 것은 아니다..

  • 동일성
    • 동일의 의미로 두 개의 객체가 완전히 같은경우 (주소값이 같은 경우)
  • 동등성
    • 동등하다는 의미, 두개의 객체가 같은 정보를 가지고 있는경우(주소값은 다름)

==연산자를 통해 동일한지의 여부를 알수있으며, equals를 통해 동등한지 여부를 확인 가능..

 

허나 equals를 통해 모든 것을 다 동등한지 여부를 확인할 수는없다 Object메소드에서는 동일성확인을 하는 것이기떄문.

오버라이드를 해서 재정의를 해야함.


[equals와 해쉬코드의 차이점, 왜 숫자일까]

  • equals는 객체의 내용이 같은지를 비교 하며(동등성)
  • hashCode는 두 객체가 같은 객체인지 동일 비교(==)
    • 런타임중 객체의 유일한 정수 값을 반환, 해당 반환값은 Heap에 저장된 객체의 메모리주소 이다.
    • 해시함수를 사용하여 가변 크기의 입력 값에서 고정된 크기의 출력값을 생성하는 과정이며, 해당(해싱)과정을 통해 얻어온 값을 해시코드라고 함. -> 해당이유가 정수값으로 나오는 이유..?

 


[인터페이스와 추상화 클래스의 차이, 선택의 기준]

  • 추상클래스
    • 여러 모델의 클래스를 생성할 때 공통된 상태의 틀을 만들때 사용하면 좋음
    • 실체 클래스의 공통상태의 모음
    • 특징
      • abstract키워드를 붙임
      • 추상클래스로 생성하면 new키워드를 통해 객체를 직접 생성이 ㅂ루가능함
      • 인터페이스처럼 구현부가 없슴
      • 서브클래스에서 반드시 구현해야함.
      • 일반클래스와 동일하게 상태(멤버변수, 일반메소드)와 생성자를 가질 수 있다
      • 접근제어자의 사용이 자유롭다
      • 다중상속이 불가능하다
  • 인터페이스
    • 구현된 것이 없으며 설계도 그 자체
    • 특징
      • 모든 멤버 변수는 public static final이어야 하며, 생략이 가능하다
      • 모든 메소드는 public abstract이어야 하며 생략이 가능하다
      • Java 8 부터는 static, default method를 사용이 가능하다
      • 추상 클래스처럼 불완전하기 떄문에 다른클래스를 작성하는데 도움을 줄 목적으로 작성된다.
      • 다중 상속이 가능하다.
  • 공통점
    • 추상 메소드를 사용이 가능하다는 점
  • 차이점
    • 다중상속여부
      • 인터페이스는 다른 여러개 인터페이스를 함께 구현이 가능함
      • 추상클래스는 다중 상속이 불가
    • 상태 유무
      • 추상 클래스는 상태(멤버변수, 일반메소드, 생성자)를 가질수 있음
      • 인터페이스는 추상클래스의 반대로 상태를 가질수가 없다

[Exception에서 checkedException와 UncheckedException]

 

Exception과 Error

  • 공통점
    • Throwable클래스를 상속받음
    •  오류상황이 발생될 경우 사용
  • 차이점
    • Exception
      • 프로그램이 실행이 되는 도중 참조된 값이 잘못되는 경우 등의 정상적인 프로그램 흐름을 벗어나는 것을 말함.
      • 개발자가 직접 처리할 수 있으며, 예측하여 핸들링이 가능함
    • Error
      • 시스템에 비정상적인 상황이 발생 하였을 경우 발생하며, 복구할 수 없는 경우
      • 개발자가 예측하기 쉽지 않고 처리하거나 핸들링 할 수 있는 방법도 없슴.

 

Checked Exception, Unchecked Exception

  • Checked Exception
    • RuntimeException의 하위클래스가 아닌 Exception클래스의 하위클래스들
    • 명시적인 예외처리를 강제한다
      • try~catch로 예외를 잡거나 throw로 호출한 예외를 던져야 함.
    • 예외가 발생하였을 경우 복구(또는 RollBack)이 가능하다
  • Unchecked Exception
    • RuntimeException의 하위 클래스를 의미
    • 명시적인 예외 처리를 강제하지 않음
      • try~catch를 통해 예외를 잡거나 throw로 호출한 메소드에게 예외를 던지지 않음
728x90

'Java,Spring > F-Lab' 카테고리의 다른 글

22. 06. 20 F-Lab 멘토링  (0) 2022.06.27
22. 05. 30 F-Lab 멘토링  (0) 2022.06.12
22.05.24 F-Lab멘토링  (0) 2022.05.30
22.05.09 F-Lab멘토링  (0) 2022.05.11
22.05.04 F-Lab멘토링  (0) 2022.05.05
Comments