다형성에서 지원하는 메소드 오버로딩과 오버라이딩에서 알아보겠습니다.
오버로딩
- 하나의 클래스 내에서 같은이름으로 여러개의 메소드를 정의 하는것
- 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출에 응답하게 합니다.
ex)
public class Test{
//obtest() 메소드
void obtest(){
System.out.println("테스트1");
}
//obtest(1) 정수형 1개 메소드
void obtest(int a){
System.out.println("테스트2" + a);
}
//obtest(1, 2) 정수형 2개 메소드
void obtest(int a, int b){
System.out.println("테스트3" + a + b);
}
}
public class Test1 {
public static void main(Strint[] agrgs) {
// 객체 생성
Test t1 = new Test();
// test 메소드 호출
t1.test();
t1.test(1);
t1.test(1, 2);
}
}
결과값
테스트1
테스트21
테스트312
오버라이딩
- 상속관계에서 상위 클래스의 메소드를 하위클래스에서 재정의 하는것
- 하위객체의 메소드이름과 인자값의 타입은 상위 객체의 메소드와 반드시 일치하여야 하고 매개변수의 개수와 타입이 반드시 동일
ex)
public class Test{
public String job;
public int sal;
public void company(){
System.out.println("나의 회사는" + this.job + "이고 연봉은 " + this.sal + "입니다.");
}
}
}
// Test 클래스 상속
public class Myjob extends Test {
String address;
public void company(){
System.out.println("나의 회사는" + this.job + "이고 연봉은 " + this.sal + "입니다.");
System.out.println("회사 주소는" + this.address + "입니다.");
}
}
public class test1 {
public static void main(Strint[] agrgs) {
// 객체 생성
Myjob t2 = new Myjob();
// 변수 설정
t2.job = "삼성"
t2.sal = 4000;
t2.address = "서울"
//company 메소드 호출
t2.company();
}
결과값
나의 회사는 삼성이고 연봉은 4000입니다.
회사 주소는 서울입니다.
'Java' 카테고리의 다른 글
[Java] MyBatis란? (0) | 2020.02.26 |
---|---|
[Java] 인스턴스의 생성과 사용 (0) | 2020.01.17 |
[Java] String 배열 (0) | 2020.01.17 |
[Java] 조건문(if, switch-case)과 반복문(for) (0) | 2020.01.16 |