day06 Overload

JTH·2023년 1월 30일
0

gb_jth

목록 보기
16/56

4.다형성 - 오버로드

4-1. 메서드 오버로드(overload)

  • 원칙적으로 하나의 클래스 안에서는 동일한 이름의 메서드가 두 개 이상 존재할 수 없지만, 이를 가능하게 하는 예외적인 처리 기법

4-2. 이름이 동일한 메서드를 정의하기 위한 조건

  • 메서드 간의 파라미터가 서로 달라야 한다.
    -> 파라미터의 데이터 타입이 달라야한다.
    (데이터 형이 동일하고 변수의 이름이 다른 경우는 동일한 파라미터로 인식된다.
    -> 파라미터의 개수가 다르다.
    -> 서로 다른 데이터형을 갖는 파라미터들의 전달 순서가 다르다.
  • 리터형이 다른 경우는 오버로드의 성립에 아무런 영향을 주지 않는다.

4-3. 오버로드의 예시

  • 파라미터의 데이터 형이 서로 다르기 때문에 오버로드 성립
    public void foo( int a){}
    public void foo( long a){}

  • 파라미터의 개수가 서로 다르기 때문에 오버로드 성립
    public void foo( int a ){}
    public void foo( int a, int b){}
    user(int a)
    user(String msg)

  • 데이터형의 전달 순서가 다르기 때문에 오버로드 성립.
    public void foo( int a, String b){}
    public void foo( String a, int b){}

  • 오버로드 불가!!!!! 앞의 리턴형은 관계없이 호출 파라미터만 신경쓰면된다.
    public int foo( int a){}
    public String foo( int x){}

4-4. 생성자의 Overload

  • 생성자 역시 메서드의 한 종류이므로 Overload가 가능하다.
  • 생성자를 Overload할 경우, 해당 클래스에 대해 '객체를 생성하는 방법'을 다양하게 준비할 수 있게 된다.
package overload;

/* 
 * 멤버변수 String job, int age 선언
 *  - 생성자를 기본, int, String, String int 총 4개 생성
 *  - toString() , override 생성
 * Main03
 *  - 객체를 생성자 가지수에 맞춰 총 4개 생성 및 toString() 각각 출력
 */
public class Member {
	private String job;
	private int age;
	
	public Member() {}
	public Member(int age) { this.age = age; }
	public Member(String job) { this.job = job; }
	public Member(String job, int age) { 
		this.job = job; 
		this.age = age;
	}
	@Override
	public String toString() {
		return "Member [job=" + job 
				+ ", age=" + age + "]";
	}
	
package overload;

import java.util.function.ToDoubleBiFunction;

public class Main03 {

	public static void main(String[] args) {
		Member m1 = new Member();
		System.out.println(m1.toString());
		
		Member m2 = new Member(20);
		System.out.println(m2.toString());
		
		Member m3 = new Member("학생");
		System.out.println(m3.toString());
		
		Member m4 = new Member("강사", 20);
		System.out.println(m4.toString());
		
		
	}

}
profile
//

0개의 댓글