오버라이딩?
자식클래스에서 부모클래스로부터 받아온 메서드를 재정의 하는 것
사용목적?
자식에 맞는 기능으로 맞춰 동작하기 위해
오버로딩 : 메서드 중복정의
-메서드 시그니처
> 함수명
> 매개변수 개수
> 매개변수 타입
오버라이딩 : 메서드 재정의
상속관계에 있는 자식클래스가 부모클래스의 메서드를 다시 정의하는 것
package day24;
public class Inheritance2 {
public static void main(String[] args) {
Leader leader = new Leader();
leader.say();
}
}
class Student2{
void learn() {
System.out.println("배우기");
}
void eat() {
System.out.println("밥먹기");
}
void say() {
System.out.println("선생님 안녕하세요~");
}
}
class Leader extends Student2{
void lead() {}
void say() {
System.out.println("선생님께 인사!");
}
}
출력결과
선생님께 인사!
단, 리더클래스의 say()에서 부모(학생)클래스의 say()호출하는 법은
부모 클래스의 필드 사용 방법 : super 자식 클래스 내 필드 사용 방법 : this |
상속과 생성자
super() 는 부모클래스의 생성자 호출하는 방법이다.
- 부모클래스생성자(super())는 무조건 자식 클래스의 생성자 첫 줄에서 이뤄진다.
- 작성하지 않을 시 컴파일러가 자동 호출된다.
컴파일 오류 예제.
★ 컴파일 오류 발생 이유는 자식클래스에서 생성자 호출 시, 부모클래스의 기본 생성자가 자동으로 호출되기 때문에
부모의 기본 생성자가 존재해야 한다.
★
오류 해결방법
1. 부모클래스에 기본 생성자 추가 -> Car( ) { }
2. 호출할 부모 생성자 지정하기 -> super(color);
오류 해결방법1.
-> 부모클래스에 기본 생성자 Car( ) { } 추가
오류 해결방법2.
Object 클래스
모든 클래스의 조상(상위)클래스를 의미한다.
우리는 class를 생성할 때 Superclass 로 java.lang.패키지에 있는 Object클래스로 자동으로 지정하는 것을 알 수 있다.
Object클래스에서 받아오는 모든 메서드를 사용할 수 있다. ( toString(), equals(), getClass() )
1. toString() : 객체의 정보를 문자열로 출력할 때 사용한다.
package day24;
public class ObjectTest {
public static void main(String[] args) {
Aclass a1 = new Aclass();
Aclass a2 = new Aclass();
//toString(): 객체정보를 문자열 출력
System.out.println(a1.toString());
}
}
class Aclass{
}
출력결과 day24.Aclass@7ad041f3 //day24 패키지에있는 A클래스로 만든 객체고, 주소값(@)은 7ad041f3 다. //toString()을 생략가능 system.out.println(a1); 을 출력해도 동일한 결과가 나온다. |
2. equals() : 두 객체가 동일한가를 비교할 때 사용한다.
package day24;
public class ObjectTest {
public static void main(String[] args) {
Aclass a1 = new Aclass();
Aclass a2 = new Aclass();
//equals(): 두 객체가 동일한가를 비교
System.out.println(a1.equals(a2));
}
}
class Aclass{
}
출력결과 false //a1 과 a2 는 같은 클래스로 만들었지만 동일한 객체는 아니다. |
3. getClass()
package day24;
public class ObjectTest {
public static void main(String[] args) {
Aclass a1 = new Aclass();
Aclass a2 = new Aclass();
//getClass(): 객체의 클래스 정보를 가져옴
System.out.println(a1.getClass());
}
}
class Aclass{
}
출력결과 class day24.Aclass //day24의 Aclass에서 만들어진 객체다. 라는 정보까지 출력해주는 메서드이다. |
'공부 기록노트 > java' 카테고리의 다른 글
[Java] GUI 프로그래밍을 위한 AWT (0) | 2023.01.01 |
---|---|
[조건문] if문과 switch문 (0) | 2022.10.02 |
[메소드] Math.random( ) (0) | 2022.10.02 |
[자바] 상속 (Inheritance), 부모/자식클래스 (0) | 2022.08.18 |
코드 작성 연습방법 (1) | 2022.08.09 |