Part06 - method

uglyduck.dev·2020년 9월 27일
0
post-thumbnail

Local

package com.mywork.ex;

// 국내에 거주하는 사람
public class Local {
	// Field      // 초기화 상태
	String name;  // null
	int age;      // 0
	String sn;    // null  주민등록번호
	boolean isKorean;  // false  한국인: true, 외국인: false
	// Method
	void setLocalInfo(String _name, int _age, String _sn) {
		// name = _name;
		// age = _age;
		setLocalInfo(_name, _age);
		sn = _sn;
		isKorean = sn.charAt(7) <= '4' ? true : false;
	}
	void setLocalInfo(String _name, int _age) {
		name = _name;
		age = _age;
	}
	void output() {
		System.out.println("이름 : " + name);
		System.out.println("나이 : " + age);
		System.out.println("주민등록번호 : " + (sn == null ? "없음" : sn));
		System.out.println(isKorean ? "한국인" : "외국인" );
	}
}

LocalMain

package com.mywork.ex;

public class LocalMain {
	public static void main(String[] args) {
		Local person1 = new Local();
		Local person2 = new Local();
		Local person3 = new Local();
		
		person1.setLocalInfo("홍길동", 20, "901215-1234567");
		person2.setLocalInfo("응우엔티엔", 21, "911215-6789123");
		person3.setLocalInfo("james", 22);
		
		person1.output(); System.out.println("----------");
		person2.output(); System.out.println("----------");
		person3.output();
	}
}

Rect

package com.mywork.ex;
/*
 * 메소드 오버로딩 (Method overloading)
 *  1. 메소드 이름이 같다
 *  2. 매개변수가 다르다.
 *  3. 리턴은 상관없다.
 * 
 */
public class Rect {
	// Field
	int width;        // 너비
	int height;       // 높이
	boolean isSquare; // 직사각형: false, true
	
	// Method
	void setFields(int w, int h) {
		width = w;
		height = h;
		isSquare = (w == h) ? true : false;
	}
	void setFields(int side) {
		width = side;
		height = side;
		isSquare = true;
	}
	int calcArea() {
		return width * height;
	}
	void output() {
		System.out.println("너비 : " + width);
		System.out.println("높이 : " + height);
		System.out.println("크기 : " + calcArea());
		System.out.println(isSquare ? "정사각형" : "직사각형");
	}
}

RectMain

package com.mywork.ex;

public class RectMain {
	public static void main(String[] args) {
		// 1. 객체(인스턴스) 생성
		Rect nemo1 = new Rect(); 
		Rect nemo2 = new Rect();
		
		// 2. 메소드 호출
		nemo1.setFields(3, 4);		
		nemo2.setFields(3);
		
		nemo1.output();
		nemo2.output();
	}
}

RecursiveClass

package com.mywork.ex;
/*
 * 재귀 호출 (recursive call)
 * 	1. 메소드가 자신을 호출할 떄
 *  2. 반복문의 처리, 복잡한 알고리즘 처리
 *  3. 잘못 구현하면 무한 루프에 빠짐
 * 
 */
public class RecursiveClass {
	
	// Field
	static int count = 0;
	
	// Method
	static void recursive() {
		System.out.println("recursive() call");
		if(++count == 5) return;  // recursive method 종료
		recursive();              // 자기가 자기를 호출하는 것(재귀호출)
	}

	public static void main(String[] args) {
		recursive();
	}

}

Triangle

package com.mywork.ex;

public class Triangle {
	// Field
	int width;
	int height;
	// Method
	void setFields(int w, int h) {
		width = w;
		height = h;
	}
	// 아래 두 calcArea 메소드가 오버로딩 되지 않는 이유
	// 메소드 이름은 같지만, 매개변수가 다르지 않기(같기) 때문
	/*
	int calcArea() {      // 에러
		return width * height / 2;
	}
	double calcArea() {   // 에러
		return width * height / 2.0;
	}
	*/
}
profile
시행착오, 문제해결 그 어디 즈음에.

0개의 댓글