😀 오버라이딩

 

- 상속받은 조상의 메서드를 자신에 맞게 변경하는 것

 

 

  ✔예시)

↳ 선언부는 변경불가, 구현부(내용)만 변경가능

 

↳ 오버라이딩 하면 조상꺼는 사용하지 않고 자손꺼를 사용한다

 

 

✔예시2)

class Point extends Object {
	int x;
	int y;
	
	public Point(int x,int y) {
		this.x = x;
		this.y = y;
	}
	
	@Override // Object 클래스의 toString()을 오버라이딩
	public String toString() {
		return "x :" + x + ", y: " + y;
	}

}

public class OverrideTest {

	public static void main(String[] args) {
		Point p = new Point(5,9);
//		p.x = 5;
//		p.y = 9;
		
		System.out.println(p); //p.toString()호출
//		System.out.println(p.toString());
//		System.out.println("p.x :"+p.x);
//		System.out.println("p.y :"+p.y);
	}

}

 

❗ 오버라이딩의 조건

 

   1.선언부가 조상 클래스의 메서드와 일치해야 한다.

 

 

  ✔예시)

class Point {
	int x;
    int y;
    
    String getLocation(){  // 선언부(반환타입,메서드이름,매개변수목록)
    	return "x : " + x + ", y : " + y;        
        }							  	
    } 											  
class Point3 extends Point {									  
	int z;										  		
    											  
    String getLocation(){  // 선언부 : 조상클래스의 메서드와 일치해야 함
    	return "x : " + x + ", y : " + y + ", z : " + z;
        }
    }

   2. 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다. (접근제어자 ex) public,protected,private)

   3. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.

 

 

  ✔예시)

class Parent {
	void parentMethod() throws IOException, SQLException{ // 예외선언
    ...
    }
}   

class child extends Parent {
	void parentMethod() throws IOException{ // 예외선언 (자손은 조상클래스보다 많이 선언할 수 없다.)
    ...
    }
}

❗ 오버로딩 vs 오버라이딩

오버로딩(overloading) 기존에 없는 새로운 메서드를 정의하는 것(new) // 상속x
오버라이딩(overriding) 상속받은 메서드의 내용을 변경하는 것 (change, modify)

 

  ✔예시)

class Parent {
	void parentMethhod() {} 
    
}

class Child extends Parent{
	void parentMethod() {}   // 오버라이딩
    void parentMeethod(int i) {} // 오버로딩
    
    void childMethod() {} // 메서드정의
    void childMethod(int i) {} //오버로딩
	void childMethod() {} // 중복정의 -에러

 

'자바의 정석 > 객체지향' 카테고리의 다른 글

[객체지향] 다형성  (0) 2022.12.11
[객체지향] 제어자  (0) 2022.12.11
[객체지향] 단일상속, Object클래스  (0) 2022.12.06
[객체지향] 포함관계  (0) 2022.12.06
[객체지향] 상속  (0) 2022.12.05

+ Recent posts