본문 바로가기

프로그래밍 언어/Java

[Java] 오버로딩과 오버라이딩






자바에서 다형성을 지원하는 방법으로 메소드 오버로딩(Overloading)과 오버라이딩(Overriding)이 있다. 


간단하게 정의해보면 오버로딩은 같은 이름의 메소드를 여러 개 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술이고, 오버라이딩은 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의해서 사용하는 기술이다.




▶ 오버로딩(Overloading)




같은 이름의 함수를 여러 개 정의하고 매개변수의 자료형과 개수를 다르게 하여 다양한 호출을 가능하게 한다.



/*
    Overloading.java
*/

public class Overloading { void result() { //매개변수 없을 때 System.out.println("매개변수 없음"); } void result(int a, int b) { //int 형 매개변수 2개 System.out.println("매개변수는 " + a + "와 " + b); } void result(double d) { //double 형 매개변수 1개 System.out.println("매개변수는 " + d); } }




/*
    result.java
*/
public class result {
    public static void main(String[] args) {
        
        Overloading ol = new Overloading();
        
        ol.result();
        
        ol.result(10, 20);
        
        ol.result(10);
        
        ol.result(3.14);
    }
}



실행 결과는 다음과 같다







▶ 오버라이딩(Overriding)




상위 클래스가 가지고 있는 멤버가 하위 클래스로 상속되는 것처럼 상위 클래스가 가지고 있는 메소드도 하위 클래스로 상속되어 하위 클래스에서 사용할 수 있다. 하지만 하위 클래스에서 메소드를 재정의해서 사용할 수 있다.




/*
    Employee.java
*/
public class Employee {
    public String name;
    public int age;
    
    public void print() {
        System.out.println("사원의 이름은 " + this.name + "이고, 나이는 " + this.age + "입니다.");
    }
}




/*
    Manager.java
*/
//Employee 상속
public class Manager extends Employee{
    String JobOfManage;
    
    //print() 메소드 오버라이딩
    public void print() {
        System.out.println("사원의 이름은 " + this.name + "이고, 나이는 " + this.age + "입니다.");
        System.out.println("관리자 " + this.name + "은 " + this.JobOfManage + " 담당입니다.");
        
    }
}




/*
    OverridngResult.java
*/
public class OverridingResult {
    public static void main(String[] args) {
        
        Manager manager = new Manager();
        
        manager.name = "토파즈";
        manager.age = 20;
        manager.JobOfManage = "기획팀 팀장";
        
        manager.print();
    }
}





실행 결과는 다음과 같다.









'프로그래밍 언어 > Java' 카테고리의 다른 글

[수치계산] 학생 점수 프로그램  (0) 2018.09.13
[수치계산] 음료 주문 프로그램  (0) 2018.09.13
[Java] 소수의 개수 구하기  (2) 2018.09.13
[Java] 타입 변환  (0) 2017.10.01
[Java] 자바의 특징  (0) 2017.10.01