class TestOverloading {
//매개변수가 없는 sol 메서드
void sol() {
System.out.println("매개변수가 없습니다");
}
//매개변수가 int형 2개인 sol 메서드
void sol(int a, int b) {
System.out.println("매개변수" + a + "와" + b);
}
//매개변수가 String형 1개인 sol 메서드
void sol(String c) {
System.out.println("매개변수" + c);
}
}
public class TestOverLoad {
public static void main(String[] args) {
TestOverloading ob = new TestOverloading();
ob.sol();
ob.sol(1,2);
ob.sol("오버로딩 테스트");
}
}
이와 같이 sol 메서드가 3개지만, 매개변수 유형과 개수가 다름
호출 매개변수에 따라 맞는 함수를 실행함
//부모 클래스
class Woman {
public String name;
public int age;
public void info() {
System.out.println("여자 이름은 "+name+", 나이는 "+age+"살");
}
}
// Woman 클래스 상속받은 Job 클래스
class Job extends Woman {
String job;
// 부모 클래스(Woman)에 있는 info 메서드 재정의
public void info() {
System.out.println("여자의 직업은 "+job+"입니다.");
}
}
public class TestOverRide {
public static void main(String[] args) {
//Job 객체 생성
Job job = new Job();
//변수 설정
job.name = "솔이";
job.age = 26;
job.job = "개발자";
//호출
job.info();
}
}
결과는 "여자의 직업은 개발자입니다."가 출력된다.
Job(자식클래스)에서 Woman(부모클래스)를 상속받아 부모클래스의 info를 재정의 하였고,
메인메서드에서 Job 객체를 생성하고 호출하였기 때문에 Job 클래스 내용이 실행됨
오버로딩과 오버라이딩 성립조건
구분 | 오버로딩 | 오버라이딩 |
---|---|---|
메서드 이름 | 동일 | 동일 |
매개변수, 타입 | 다름 | 동일 |
리턴 타입 | 상관없음 | 동일 |