반응형
오버로딩(Overloading) : 같은 이름의 메소드를 여러 개 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술.
오버라이딩(Overriding) : 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의해서 사용한다.
1. 오버로딩(Overloading)
같은 이름의 함수를 여러 개 정의하고, 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출에 응답하게 한다.
// Overloadingtest.java
public class Overloadingtest {
// test() 호출
void test(){
System.out.println("매개변수 없음");
}
// test에 매개변수로 int형 2개 호출
void test(int a, int b){
System.out.println("매개변수 "+ a +"와 "+ b);
}
// test에 매개변수 double형 1개 호출
void test(double d){
System.out.prinln("매개변수 " + d);
}
}
// test.java
public class test {
public static void main (String[] args){
// OverLoadingtest 객체 생성
Overloadingtest ob = new Overloadingtest();
// test() 호출
ob.test();
// test(int a, int b) 호출
ob.test(10, 20);
// test(double d) 호출
ob.test(50);
// test(double d) 호출
ob.test(123.4);
}
}
<실행결과>
매개변수 없음
매개변수 10와 20
매개변수 50.0
매개변수 123.4
예제 코드에서와 같이 test라는 같은 이름의 메소드를 여러 개 정의하고,
매개변수만 변경하여 선언했을 때,
호출 매개변수에 따라 매칭되어 함수를 실행시킨다.
2. 오버라이딩 (Overriding)
상위클래스가 가지고 있는 멤버변수가 하위클래스로 상속되는 것처럼
상위클래스가 가지고 있는 메소드도 하위클래스로 상속되어 하위클래스에서 사용할 수 있다.
하지만, 하위클래스에서 메소드를 재정의해서 사용할 수 있다.
상속 관계에 있는 클래스 간에 같은 이름의 메소드를 정의하는 기술을 오버라이딩이라고 한다.
// Employee.java , Manager.java
public class Employee{
public String name;
public int age;
// print() 메소드
public void print(){
System.out.println("사원의 이름은 "+ this.name + "이고, 나이는 "+ this.age + "입니다.");
}
}
//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.jobOfMange + " 담당입니다.");
}
}
// Employee.java , Manager.java
public class test{
public static void main (String[] args){
// Manager 객체 생성
Manager baek = new Manager();
// 변수 설정
baek.name = "flower0";
baek.age = 25;
baek.jobOfManager ="개발자";
// Overriding된 Manager객체의 print() 호출
baek.print();
}
}
<실행결과>
사원의 이름은 flower0이고, 나이는 25입니다.
관리자 flower0은 개발자 담당입니다.
반응형