[어제 배운 상속 복습]
- 규선생님 말씀: 기본 생성자가 없으면 .super () 써주기
(챗 GPT선생님의 말씀:. 기본 생성자가 없는 경우, 하위 클래스에서 상위 클래스의 생성자를 호출해야 할 때는 .super()를 사용하는 것이 맞습니다. .super()는 하위 클래스에서 상위 클래스의 생성자를 명시적으로 호출하는 방법입니다.)
- □금,토,일 공부하기
- 연산자 모르는 거 규열쌤한테 물어보고 해결됐음 p.108쪽 확인문제 5번 집가서 다시 풀어보기
-(강사님께서 초보개발자는 장비를 많이 가지고 다닌다고 했는데 좀 뜨끔 ^^; )
[오버라이딩]
- 오버라이딩이 뭔지?
오버라이딩(Overriding)은 하위 클래스가 상위 클래스의 메서드를 재정의하는 것을 말합니다.
- 오버라이딩을 왜하는지?
부모메서드를 상속받고 싶지 않은 상태에서
어차피 상속은 받아야 되니까 내용(?)을 바꾸는 것.
- 오버라이딩 공부를 왜 해야하는가?
오버라이딩을 하지않으면 다형성의 효과를 낼 수가 없기 때문.
- 다형성 구현: 오버라이딩은 다형성(polymorphism)을 구현하는 데 사용됩니다. 다형성은 객체 지향 프로그래밍의 중요한 특징 중 하나로, 같은 메서드 이름을 가진 다양한 하위 클래스 객체들이 각각 다른 동작을 수행할 수 있는 능력을 의미합니다. 오버라이딩을 통해 상위 클래스의 메서드를 하위 클래스에서 재정의하면, 이 메서드를 호출하는 코드에서는 하위 클래스의 메서드가 실행되어 다형성을 구현할 수 있습니다.
- 동작 변경: 상위 클래스의 메서드를 하위 클래스에서 재정의함으로써, 하위 클래스는 상위 클래스의 동작을 변경할 수 있습니다. 하위 클래스는 필요에 맞게 메서드를 재정의하여 원하는 동작으로 바꿀 수 있습니다. 이는 상속과 함께 사용되어 코드의 재사용성을 높이고 유지보수를 용이하게 만들어줍니다.
- 확장성: 상위 클래스의 기능을 확장하기 위해 오버라이딩을 사용할 수 있습니다. 상위 클래스에 있는 메서드를 재정의하여 추가적인 기능을 구현하거나 수정할 수 있습니다. 이를 통해 하위 클래스는 상위 클래스의 기능을 확장하면서도 필요에 맞게 변경할 수 있습니다.
- 다른 동작 제공: 오버라이딩을 통해 상위 클래스의 메서드를 다른 동작으로 대체할 수 있습니다. 다른 하위 클래스에서는 같은 이름의 메서드를 재정의하여 다른 동작을 수행하도록 할 수 있습니다. 이는 객체지향 프로그래밍의 다형성을 통해 코드의 유연성을 높여줍니다.
[업캐스팅]
자바에서 자식 클래스는 부모 클래스 타입으로 자동 형변환이 가능합니다. 이를 업캐스팅(upcasting)이라고도 합니다.
객체 생성시 오버라이딩된 메서드는 해당 객체의 동작을 정의하는 일부분으로 유지됩니다.
[다형성]
다형성은 같은 이름의 메서드나 클래스가 다양한 형태로 동작할 수 있는 객체 지향 프로그래밍의 개념입니다.
다형성을 위해서 업캐스팅, 다운캐스팅, 오버라이딩을 알아야 한다.
- 업캐스팅
- 다운캐스팅
- 오버라이딩
업캐스팅은 하위 클래스의 객체를 상위 클래스 타입으로 자동 형변환하는 것을 말합니다. 이를 통해 부모 클래스의 변수에 자식 클래스의 객체를 할당할 수 있으며, 다형성을 구현할 수 있습니다. 업캐스팅을 통해 객체를 일반화하고 공통된 기능에 접근할 수 있습니다.
다운캐스팅은 업캐스팅된 객체를 다시 원래의 하위 클래스 타입으로 형변환하는 것을 말합니다. 업캐스팅된 상위 클래스 타입의 변수를 하위 클래스 타입으로 형변환하여 다시 해당 클래스의 고유한 멤버에 접근할 수 있습니다. 다운캐스팅은 업캐스팅된 객체가 원래 하위 클래스의 인스턴스여야만 가능하며, 그렇지 않을 경우 ClassCastException이 발생할 수 있습니다. 따라서 다운캐스팅을 사용할 때는 instanceof 연산자를 사용하여 안전하게 형변환 가능 여부를 확인하는 것이 좋습니다.
오버라이딩(Overriding)은 상속 관계에서 부모 클래스의 메서드를 자식 클래스에서 동일한 시그니처(메서드 이름, 매개변수, 반환 타입)를 가지고 재정의하는 것을 말합니다.
[주의할 점]
업캐스팅 된것만 다운캐스딩 할 수 있다.
( 할일
□주말에 OverrideTest 코드 분석하기
□원도형의면적, 도형의면적이 한번씩 나오는지)
(이제 곧 주말이군? 오늘은 여기까지!
'JAVA 수업 > java 수업 기록' 카테고리의 다른 글
0528 주말공부 (0) | 2023.05.28 |
---|---|
0527 주말공부 (2) | 2023.05.27 |
0524 수업 내용 (2) | 2023.05.24 |
0523 수업내용 (0) | 2023.05.23 |
0522 수업 내용 (2) | 2023.05.22 |