상속?
- 객체지향에서 사용됨.
- 부모클래스와 자식클래스가 존재, 자식클래스는 부모클래스를 상속받는다.
- 일반화 시킨다 --> 자식클래스들을 부모클래스로 부를 수 있는 걸 말함.
- 상속 = 일반화 + 확장
- 결합도가 높은 관계는 상속임(객체와 객체간의 관계 중) --> 웬만하면 상속은 사용하지 말기.
- 상속 선언 방법: class 클래스명 extends 부모 클래스명{}
- 아무것도 상속받지 않으면 자동으로 java.lang.Object를 상속받음.
다형성 - 메소드 오버라이딩
- 상위 클래스(부모 클래스)의 메소드를 하위 클래스(자식 클래스)가 재정의 하는 것.
- 메소드 이름, 파라미터 갯수, 타입 등이 모두 동일해야함.
- 메소드가 오버라이딩 되면 무조건 자식의 메소드가 실행됨!! (참조 타입이 부모타입이다 하더라도 실제 동작은 인스턴스에서 오버라이딩된 기능이 동작함 --> 자식의 메소드 실행)
- intellj에서 cmd + enter 시, 열리는 메뉴에서 Override Methods를 누르면 쉽게 메소드를 오버라이딩 할 수 있음
- 자식 클래스가 여러개의 메소드를 가지고 있더라도 오버라이딩하는 부모 클래스의 메소드만 사용가능함!!
필드와 메소드 오버라이딩
- 필드는 타입을 따라가고, 메소드는 오버라이딩된 자식의 메소드가 실행됨.
- 필드는 오버라이딩 된다고 하더라도, 부모타입을 따라감.
- 메소드가 오버라이딩되면 무조건 자식의 것이 실행됨!!!!
- 정보 은닉? 객체지향프로그래밍의 중요한 기법으로, 중요한 필드는 은닉하고, 필드는 메소드를 통해서만 접근해서 사용하도록함.(즉 필드는 외부에서 접근못하도록 해야함)
- --> 객체 지향 문법 중 접근 지정자를 사용해서 은닉해야함.
getter, setter 메소드
- private 접근 지정자를 사용하면, 외부에서 필드를 통해 접근할 수 없음.
- private 필드를 접근하기 위해 제공하는 메소드가 setter, getter메소드임.
- intellj에서 ctrl + enter 시, Getter and setter가 보이는 메뉴를 통해 자동생성가능.
- setter, getter메소드를 프로퍼티(property)라고 함.(나중에 스프링에서 사용)
Object가 오버라이딩하라고 제공하는 메소드
- toString():
- intellj에서 ctrl + enter 시, tostring메소드 오버라이딩 가능.
- equals() & hashCode():
- equals는 같은 값인가를 비교할때 사용함 --> 기준이 필요함 --> 즉, 오버라이딩해서 사용해야함.
- hash라는 알고리즘을 사용하려면, hashcode사용 or 값이같은지 비교 --> hash잘 사용할 수 있음.
'Java' 카테고리의 다른 글
Java - 추상 클래스 (0) | 2023.03.22 |
---|---|
Java - 생성자 (0) | 2023.03.21 |
Java - 추상화, 다형성, 패키지 (0) | 2023.03.18 |
Java - method, field (0) | 2023.03.18 |
Java - 객체지향문법 (0) | 2023.03.16 |