[CS 스터디] JAVA

한주영·2023년 3월 6일
0

CS

목록 보기
3/19

Interface vs Abstract Class

Interface

기본설계도
추상 클래스와 비슷하게 다른 클래스를 작성하는데 도움을 주는 목적으로 작성
다중 상속 구현 가능

Abstract class

추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스
미완성 설계도
객체 생성 불가능
클래스 앞에 abstract 예약어를 사용하여 선언부만 작성

차이점?

우선 공통점은 추상메서드를 사용할수있다는것
가장 큰 차이점은 사용용도

다중상속 가능 여부에따라 달라짐
자바의특성상 클래스는 한번의 상속만 가능하여 해당 클래스 구분을
추상클래스를 통해 해결할수있다

Checked Exception vs Unchecked Exception

Exception(예외)란?

-입력값에 대한 처리가 불가능하거나 프로그램 실행 중에 참조된 값이 잘못된 경우 등등
정상적인 프로그램의 흐름에 어긋나는것

Checked Exception

명시적인 예외처리를 강제하면 -> checked

RuntimeException의 하위클래스가 아니면서 Exception 클래스의 하위클래스
반드시 에러를 처리해야하는 특징을 하지고있음
(ry~catch 로 예외를 잡거나 throw로 호출한 메소드에게 예외를 던져야한다)

존재하지않은 파일을 입력했을때
실수로 클래스의 이름을 잘못 적었을때

Unchecked Exception

명시적인 예외처리를 강제하지않기때문에 Unchecked

RuntimeException의 하위클래스
체크예외와는 달리 에러 처리를 강제하지않음
말그래도 실행중(runtime)이 발생할수 있는 예외를 의미

-배열의 범위를 벗어난 경우(ArrayIndexOutOfBoundsException)

  • 값이 null인 참조 변수를 참조(NullPointerException)

static

정적필드와 정적 메소드라고 함
이 둘을 합쳐 정적 멤버라고 부름
객체에 소속된 멤버가 아닌 클래스에 고정된 멤버
클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할때 클래스 별로 관리됨

final

final 필드는 초기값이 저장되면 최종값이 되어 수정할수없다
초기화는 한번만 가능

final 필드 정의

final int number=1;   //final 타입 필드[=초기값]

final은 클래스, 메서드 ,변수에 각각 붙을수있다
final이 붙어있는 클래스는 상속을 할수없음

generic

데이터 타입을 일반화한다는 것을 의미
클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일시 미리 저장

장점?
1.클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일수있다
2.반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일수있다

class MyArry <T>{
    T element;
    void setElement(T element) {this.element=element}
    T getElement() {return element;}

T는 타입변수 임의의 참조형 타입

와일드 카드의 사용

와일드 카드란? 이름에 제한을 두지 않음을 표현하는데 사용하는 기호
자바의 제네릭에서는 물음표 ? 기호를 사용하여 이러한 와일드 카드를 사용할수있다

<?>           // 타입 변수에 모든 타입을 사용할 수 있음.
<? extends T> // T 타입과 T 타입을 상속받는 자손 클래스 타입만을 사용할 수 있음.
<? super T>   // T 타입과 T 타입이 상속받은 조상 클래스 타입만을 사용할 수 있음.
profile
백엔드개발자가 되고싶은 코린이:)

0개의 댓글