본문 바로가기

Java

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

다형성에서 지원하는 메소드 오버로딩과 오버라이딩에서 알아보겠습니다.

 

오버로딩

 

- 하나의 클래스 내에서 같은이름으로 여러개의 메소드를 정의 하는것

 

- 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출에 응답하게 합니다.

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