오늘의 키워드
- 상속
- 추상클래스
- 인터페이스
오늘의 내용
- 상속
- 부모 클래스의 필드와 메서드를 자식 클래스에 물려주는것
- 상속을 사용해 적은 양의 코드로 새로운 클래스를 작성 공통적인 코드 관리로 코드추가와 변경이 쉬워짐
- 부모 클래스에 새로운 필드와 메서드가 추가되면 자식 클래스도 사용가능
- 자식 클래스는 부모 클래스에 영향을 주지 않는다
- extends를 사용 : public class 자식클래스 extends 부모클래스 { }
- 다중 상속을 허용하지 않고 final을 사용하면 상속과 오버라이딩이 불가하다
- Object 클래스의 메서드
- 모든 최상위 부모 클래스는 Object를 사용할 수 있고 부모가 없으면 자동으로 Object를 상속받음
- Object clone() : 해당 객체의 복제본을 생성하여 반환함
- boolean equals(Object object) : 해당 객체와 전달받은 객체가 같은지 여부를 반환함
- Class getClass() : 해당 객체의 클래스 타입을 반환함
- int hashCode() : 자바에서 객체를 식별하는 정수값인 해시 코드를 반환함
- String toString() : 해당 객체 정보를 문자열로 반환함. & Object 클래스에서는 클래스이름 @해쉬코드값 리턴
- 오버라이딩
- 상속받은 메서드의 내용을 재정의 하는것을 말한다
- 선언부가 부모 클래스 메서드와 일치해야한
- 접근 제어자를 부모 클래스의 메서드보다 좁은 범위로는 변경이 불가하다
- @Override 에노테이션(aanotation)
- super & super( )
- this & this( )와 사용법이 비슷하다
- 자식 클래스에서 부모 클래스를 지칭할 때 사용된다
- ex : public void setCarInfo(String model, String color, double price) {
super.model = model; // model은 부모 필드에 set
super.color = color; // color는 부모 필드에 set
this.price = price; // price는 자식 필드에 set
}
- 다형성
- 참조변수의 타입변환을 활용해 구현이 가능하다
- 반환타입, 매개변수에도 적용이 가능하다
- 추상 클래스
- 클래스를 설계도라하면 미완성 설계도를 말한다
- abstract를 사용하여 추상 클래스를 선언한
- 추상 메서드는 포함시키지 못 한다
- 추상 메서드 : 아직 구현되지 않은 미완성된 메서드, abstract를 사용해 선언, 블록{ } 부분이 없음, extends를 사용해 클래스에서 상속, 정의만 할 뿐 실행 내용은 가지고 있지 않다
- 자식 클래스에 의해서만 완성이 가능하다
- 추상 클래스의 추상메서드는 반드시 오버라이딩 되어야한다
- 인터페이스
- 상속 관계가 없는 다른 클래스들이 서로 동일한 메서드를 구성해야할 때 클래스들의 동일한 사용방법과 행위를 보장해준다
- 구현 클래스들은 반드시 정의된 메서드들을 구현해야한다
- 구현 클래스들의 동일한 사용방법과 행위를 보장해야 한다
- interface 키워드를 사용하여 인터페이스를 선언할 수 있습니다.
public interface 인터페이스명 { } - 클래스와 마찬가지로 public, default 접근 제어자를 지정할 수 있다
- 직접 인스턴스를 생성할 수 없기에 클래스에 구현되어 생성된다
- implements 키워드를 사용하여 인터페이스를 구현할 수 있습니다.
- public class 클래스명 implements 인터페이스명 { // 추상 메서드 오버라이딩
@Override
public 리턴타입 메서드이름(매개변수, ...) { // 실행문
} } - 추상 메서드는 구현될 때 반드시 오버라이딩 되어야 한다
- 추상 메서드가 일부만 구현되야 할때 추상 클래스로 변경해줘야 한다
- 인터페이스간 상속을 하려면 extends를 사용한다
interface C extends A, B { } - 클래스와 다르게 다중 상속이 가능하다
- 인터페이스 다형성
- 매개변수와 반환타입에서 다형성이 적용될 수 있다
- 인터페이스 변수 = 구현객체; 는 자동으로 타입 변환이 일어난다
- 구현객체타입 변수 = (구현객체타입) 인터페이스변수; 로 강제 타입변환이 가능하다
- 디폴트 메서드
- 추상 메서드의 기본적인 구현을 제공하는 메소드다
- 메서드 앞에 default를 붙이도 { }블럭이 존재
default void aa() { System.out.println("AA"); } - 접근 제어자는 public이며 생략가능하다
- 추상 메서드가 아니기 때문에 인터페이스의 구현체들에서 필수로 재정의 할 필요가 없다
- static 메서드
- static의 특성 그대로 인터페이스의 static 메서드도 객체 없이 호출 가능하다
- 선언방법과 호출방법은 클래스의 static메서드와 동일하다
- 접근제어자를 생략하면 컴파일러가 public을 추가해준다
오늘의 회고
- 개별 프로젝트를 진행할 수 있을정도의 강의는 끝났는데 프로젝트를 시작하려하니 막상 뭐부터 해야될지 떠오르지가 않는다
- 평생을 주입식 교육만 받다 창의적인걸 하려니 머리가 잘 안돌아가는 기분
- 그럼에도 불구하고 가장 긴 강의가 끝나니 기분은 좋다 다음이 끝판왕일지는 모르지만
'TIL' 카테고리의 다른 글
내일배움캠프 3주차 개인프로젝트 (0) | 2024.05.01 |
---|---|
내일배움캠프 3주차 TIL + 오류와 예외처리 (0) | 2024.04.29 |
내일배움캠프 2주차 TIL + 오버로딩, 인스턴스 멤버, 클래스 멤버 등 (1) | 2024.04.25 |
내일배움캠프 2주차 TIL + 연산자, 조건문, 반복, 배열, 컬렉션..... (0) | 2024.04.24 |
내일배움캠프 2주차 TIL + 변수 (0) | 2024.04.22 |