Overload(1)

9mond·2023년 7월 10일
0
post-thumbnail
post-custom-banner

1. 오버로드(Overload)

1-1. 메서드 오버로드(Overload)

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

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

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

1-3. 오버로드의 예시

  • 파라미터의 데이터 형이 서로 다르기 때문에 오버로드 성립
	public void user(int a){...}
	public void user(String a){...}
  • 파라미터의 개수가 서로 다르기 때문에 오버로드 성립
	public void user(int a){...}
	public void user(int a, int b){...}
  • 데이터 형의 전달 순서가 서로 다르기 때문에 오버로드 성립
	public void user(int a, String b){...}
	public void user(String a, int b){...}
  • 오버로드 성립되지 않음
	public void user(int a){...}	// a, b는 {...}안에서 유효한 지역변수일 뿐.
	public void user(int b){...}

public class Character {
	private String job;
	private int age;
	
	public void setProperty(String job) {
		this.job = job;
	}
	public void setProperty(int age) {
		this.age = age;
	}
	public void setProperty(String job, int age) {
		this.job = job;
		this.age = age;
	}
	public void setProperty(int age, String job) {
		this.age = age;
		this.job = job;
	}
	@Override
	public String toString() {
		return "Character [job=" + job + ", age=" + age + "]";
	}
}

	public class Main02 {
	public static void main(String[] args) {
		Character c = new Character();
		
		c.setProperty(19);
		System.out.println(c.toString());
		
		c.setProperty("회사원");
		System.out.println(c.toString());
		
		c.setProperty(20, "자영업");
		System.out.println(c.toString());
		
		c.setProperty("교수", 30);
		System.out.println(c.toString());
	}
}
profile
개발자
post-custom-banner

0개의 댓글