lang/java

java 오버라이딩(Overriding)과 오버로딩(Overloading)

C/H 2007. 6. 20. 03:54
오버라이딩(Overriding)과 오버로딩(Overloading)

오버로딩
* 메소드의 이름은 같다.
* 인수는 반드시 달라야 한다.
* 리턴 값은 다를 수도 있다.
예>
    public void getName();
    pubic void getName(int number);
    public void getName(String phoneNumber);

 오버라이딩
* 메소드의 이름도 같고
* 인수도 같으며
* 리턴값도 같다.
예>
    부무 클래스에서
    public void getData() { 파일 정보를 읽는다 }
    자식 클래스에서
    public void getData() { 데이터베이스에서 읽는다 }

오버라이딩은 주로 상속에서 쓰인다.상속관계에서 부모 클래스의 동작을 자식 클래스에서 다른 방ㅅ힉으로 실행하고자 할 때 사용한다.
상속은 객체 지향 프로그램의 구조에서 많은 양의 코드를 줄여줄 수 있고 보다 재사용이 가능한 클래스를 만든다는 데엥서 많은 이로움을 가지고 있다. 하지마 ㄴ보다 실제적인 이로움은 다음과 같은 것이다.
    상속 구조는 상위의 구조로 하위의 모든 클래스들을 통합하기 때문에 상위의 데이터 타입으로 다양한 아위의 객체를 표현할 수 있다.

Person p1 = new Student(); // 사람 종류인 p1 = 새로운 학생();
Person p2 = new teacher(); // 사람 종류인 p2 = 새로운 선생();


//Person.java
class Person{
    String name;
    public void goToSchool(){
        System.out.println(" 학교에 간다.");
    }
}

//Student.java
class Student extends Person{
    //오버라이딩
    public void goToSchool(){
        System.out.println(" 학교에 배우러 간다.");
    }
}

//Teacher.java
class Teacher extends Person{
    //오버라이딩
    public void goToSchool(){
        System.out.println(" 학교에 학생들을 가르치려 간다.");
    }
}

//School.java
class School{
    public static void main(String[] args){
        Person p1 = new Person();
        Person p2 = new Student();
        Person p3 = new Tearcher();

        p1.goToSchool();
        p2.goToSchool();
        p3.goToSchool();
    }
}

/* 분석
p1, p2, p3는 상속을 어떻게 사용하는지 보여준다.
*/

반응형