클래스 내부 구성요소 - 2. 메소드

Ⅱ. 메소드

1. 메소드

 - 메소드 : 클래스 내부에 정의된 기능(함수)

 - 메소드 명 : 기능을 나타내는 이름 (작명규칙은 변수와 동일)

 - 리턴 타입 : 이 메소드가 어떤 자료형의 값을 반환할 것인가

 - 매개변수 정의 : 이 메소드가 어떤 값을 괄호 안에 받을 것인가

// Example1
class Car {
	String color;
	String name;
	// 다음과 같이 매개변수를 여러 개 할 땐, 콤마 ','로 표시
	void chargeFuel(String oil, int price) {
		System.out.printf("%s %d원 어치 넣어주세요\n", oil, price);    // %s 는 문자열 
	}
}

public class Main {
	public static void main(String[] args) {
		Car a = new Car();
		Car b = new Car();
		a.chargeFuel("경유", 30000);		// 경유 30000원 어치 넣어주세요
		b.chargeFuel("휘발유", 50000);		// 휘발유 50000원 어치 넣어주세요
	}
}
// Example2
class Car {
	void ridePerson(String[] person) {
		for (int i = 0; i < person.length; i++) {
			System.out.println(person[i] + "야, 타라");
		}
	}
}

public class Main {
	public static void main(String[] args) {
		Car a = new Car();
		Car b = new Car();
		a.ridePerson(new String[] {"영희", "철수", "맹구"});		// 영희야, 타라!
        									// 철수야, 타라!
        									// 맹구야, 타라!
		b.ridePerson(new String[] {"짱구", "훈이", "철수", "맹구",});	// 짱구야, 타라!
        									// 훈이야, 타라!
        									// 철수야, 타라!
    										// 맹구야, 타라!
	}
}

 

2. 메소드 오버로딩 (Overloading)

 - 동일한 이름과 리턴 타입을 가진 메소드를 여러 개 정의하는 것

// Example
class Car {
	void chargeFuel(String who, String oil, int price) {
		System.out.printf("%s, %s %d원 어치 넣어주세요\n", who, oil, price);
	}
	void chargeFuel(String oil, int price) {
	// 이러면 하나는 고정시키고 나머지만 다르게 할 수 있음
	// (자바가 원하는 곳을 지정하여 실행)
		System.out.printf("%s %d원 넣어주세요\n", oil, price);
	}
	void chargeFuel(int price) {
		System.out.printf("기름 %d원 넣어주세요\n", price);
	}
}

public class Main {
	public static void main(String[] args) {
		Car a = new Car();
		Car b = new Car();
		Car c = new Car();
		a.chargeFuel("아저씨", "휘발유", 50000);	// 아저씨, 휘발유 50000원 넣어주세요
		b.chargeFuel("경유", 30000);			// 경유 30000원 넣어주세요
		c.chargeFuel(70000);				// 기름 70000원 넣어주세요
	}
}

 

3. 메소드의 가별 길이 배열 매개변수 : 몇 개를 받을 지 모를 경우, 사용

// Example
class Car {
	// 고장 시, 어디를 수지할 지 매 상황마다 다름
	void repairCar(String... parts) {
	// ...은 몇 개 받을 지 모를 경우, 사용 (parts는 배열명)
		for (String part : parts) {
			// patrs의 개수만큼 반복을 하되, part에 번갈아 저장 (for-each문)
			System.out.printf("%s 좀 수리해주세요\n", part);
		}
	}
}

public class Main {
	public static void main(String[] args) {
		Car a = new Car();
		Car b = new Car();
		a.repairCar("에어백", "변속기", "타이어");	// 에어백 좀 수리해주세요
                                                        	// 변속기 좀 수리해주세요
                                            			// 타이머 좀 수리해주세요
		b.repairCar("에어컨");				// 에어컨 좀 수리해주세요
	}
}