gwooden_코린이
java_매서드 재정의_221128(6일차) 본문
728x90
- 매서드 재정의
오버라이딩 <-- 매개변수는 다 똑같은데 내용물이 달라짐
기존에 상속받은 매서드를 다시 변경할때
새롭게 바꿔주면 그게 오버라이딩
오버라이딩은 약간의 규칙이 존재
부모 객체
void go() {
print("전진);
}
자식 객체(부모 상속)
void go() {
print("자식");
}
- 만약 부모 객체 접근자가 private으로 되어 있으면 자식 객체도 private으로 해줘야 된다.
- 오버라이딩이란 메소드의 동작만을 재정의하는 것이므로, 메소드의 선언부는 기존 메소드와 완전히 같아야 합니다.
하지만 메소드의 반환 타입은 부모 클래스의 반환 타입으로 타입 변환할 수 있는 타입이라면 변경할 수 있습니다.
- 부모 클래스의 메소드보다 접근 제어자를 더 좁은 범위로 변경할 수 없습니다
- 부모 클래스의 메소드보다 더 큰 범위의 예외를 선언할 수 없다.
< 이런 예외적인 것 제외하고는 안됨>
<오버라이딩으로 이용해 리턴 타입은 바꿀수 없다.>
int bb = 123
부모 객체 short aa = bb
double go() {
print("전진);
}
자식 객체(부모 상속)
int go() {
print("자식");
}
package 상속4;
public class TaxiMain {
public static void main(String[] args) {
Taxi t = new Taxi();
t.go();
}
}
package 상속4;
public class Taxi extends Car{
public void go() {
System.out.println("미터기를 켜고 전진");
}
}
package 상속4;
public class Car {
String color;
String name;
public void go() {
System.out.println("전진");
}
public void back() {
System.out.println("후진");
}
}
package 상속5;
public class SuperMain {
public static void main(String[] args) {
Child c = new Child(15);
Baby b = new Baby(2);
c.ageMsg();
b.ageMsg();
b.name = "김씨";
System.out.println(b.name);
}
}
결과값 나이는15살 입니다. 애기2살 김씨 |
package 상속5;
public class Parent {
String name;
}
package 상속5;
public class Child extends Parent {
int age;
public Child(int age) {
super();
this.age = age;
}
public void ageMsg() {
System.out.println("나이는" + age + "살 입니다.");
}
}
package 상속5;
public class Baby extends Child{
public Baby(int age) {
super(age);
}
public void ageMsg() {
System.out.println("애기" + age + "살");
}
}
728x90
'java > 6일차' 카테고리의 다른 글
java_다형성_221128(6일차) (0) | 2022.11.28 |
---|---|
java_super02_221128(6일차) (0) | 2022.11.28 |
java_super_221128(6일차) (0) | 2022.11.28 |
java_상속_221128(6일차) (0) | 2022.11.28 |
java_캡슐화_221128(6일차) (0) | 2022.11.28 |
Comments