gwooden_코린이

java_매서드 재정의_221128(6일차) 본문

java/6일차

java_매서드 재정의_221128(6일차)

gwooden22 2022. 11. 28. 17:41
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