java에서의
상속은 부모클래스의 필드와,메소드를 쓰는 것. 생성자는 상속 되지 않는다.
자식 클래스의 멤버 개수는 부모 클래스와 얼마든지 상관없이 확장해서 사용할 수 있다. 갯수를 맞춰줄 이유는 없다.
상속의 장점 = 부모를 상속 받으면 똑같은 코드를 다시 작성할 필요가 없더. 보다 적은 양의 코드도 새로운 클래스를 만들 수 있다. 그리고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수가 좋아진다.
오버로딩
오버로딩이란 같은 클래스 안에서 똑같은 클래스의 메서드를 여러개 정의할 수 있는 것
똑같은 메서드 이름을 쓴다.
매개변수의 이름이 달라야 오버로딩 된다.
리턴타입이 다르면 안되고 동일한 타입을 사용해야 한다. 매개변수 이름이 달라야 하는 건 의미가 없다.
접근 제한자는 같거나 다를 수 있다. EX)public 접근제한자가 바뀐다고 해서 오버로딩 되지는 않는다.
상속관계에서 부모가 가지고 있는 메서드를 재정의 하는 것이 오버라이딩
조상의 메서드와 이름이 같아야 한다. 매개변수 수와 타입이 같아야 한다. (안에 내용, 수행하는 구문만 달라야 한다)
리턴타입이 같이야 한다. 접근 제어자는 조상의 메서드보다 넓은 범위로 변경해야 한다.
예외는 조상의 메서드보다 더 디테일한 예외는 선언 가능. Exception보다 IOEception이 더 디테일하다... 이렇게
접근제어자의 조합 메소드에 스태틱(프로그램이 시작 될 때 정적 메모리 영역에 할당하고 시작한다) 앱스트랙(미완성, 객체화 할 수 없다.) 두개를 사용할 수 없음
인터페이스는 모든 메서드가 추상메서드인 클래스이다. 어떤 틀을 제공하는 클래스이다.
static, default 추가적으로 들어간 기능
모든 인터페이스의 메소드는 public, abstract이다. 그리고 상수 필드를 가질 수 있다. 객체 생성은 안되지만 reference 변수로는 사용할 수 있다.
static(하나만 생성이 되는것, 정적 메모리)
final(재정의가 불가능, 오버라이딩이 불가능)
abstract(추상메서드)
transient(필드에서 직렬화에서 제외하고 싶을 때 붙일 수 있음)
동작하다가 오류가 난 상황Unchecked Exception은 Runtime Exception
예외처리에서 catch 여러번 사용할 때
상속 관계에서 샅은레벨(형제 관계)에 해당할 때 (다형성 적용) 예외클래스간에 사용순서가 상관 없다.
최하위 예외클래스를 가장 먼저 제시해야 한다. 위에는 자식, 밑는 부모 – 에러를 잡아줌.
Exception은 모든 예외의 부모라서 맨 끝에 써야 한다. 상위 클래스이기 때문에.
int값을 어떤 클래스 Integer인 값으로 바꿀 때 Wrapper래퍼사용 / 다형성이랑은 상관이 없음
업캐스팅 묵시적으로 처리 Parent p =(Parent)new Child();
((Child)p).method();
동적 바인딩 오버라이딩한 메소드가 있을 때 자동으로 호출 한다.
다형성을 사용했을 떄의 장점
자바 컬렉션 프레임 워크가 가지는 특징
객체 입/출력을 위해서 클래스에 적용해야 하는 처리 내용 직렬화
'공부' 카테고리의 다른 글
메뉴 검색해서 찾기 오류 (0) | 2023.04.12 |
---|---|
Thunderbolts 프로젝트에 대한 오류사항 고찰1 - 'requestMappingHandlerMapping' 빈을 생성하는 중 init 메서드 호출에 실패 (0) | 2023.03.20 |