티스토리 뷰

1. 상속 받을 수 있는 클래스의 수는 단 하나이다.

 

2. 접근제어자는 자식클래스가 부모클래스보다 넓거나 같아야 한다.

 

 

 

[오버라이딩]

1. 메소드 호출 시에 오버라이딩 된 메소드가 우선적으로 호출된다.

ex)

class Human {
	String name;
    int age;
    
    public void getInfo() {
    	System.out.println("name: "+name+"\nage: "+age);
    }
}
Class Student extends Human {
	int id;
    
    public void getInfo() {	// 오버라이딩
    	System.out.println("name: "+name+"\nage: "+age+"id: "+id);
    }
}

public class InheritEx {
	public static void main(String [] args) {
    	Student std = new Student();
    
   		std.getInfo();	// 어떤 getInfo 메소드가 실행될까?
	}
}

부모 클래스인 Human과 자식 클래스인 Student에 모두 getInfo 메소드가 존재한다.

main 메소드에서 Student 객체를 만들어 getInfo 메소드를 실행하면 Student 클래스의 메소드가 실행되는데,

이는 메소드 호출 시 오버라이딩 된 메소드가 우선적으로 호출되기 때문이다.

 

 

2. 부모클래스의 메소드와 자식클래스의 메소드의 동작이 달라야 한다.

 

 

반응형

댓글