반응형

# 메서드 오버로딩 (Method Overloading)

  • 같은 이름의 메서드를 여러 개 사용할 수 있는 것.
  • 메서드 오버로딩의 조건 : 매개변수의 타입과, 개수가 다르도록 해야 함. (메서드의 signature(매개변수의 타입, 개수)가 다르면 됨)
public class Test {
	public static void main(Stirng[] args) {
		OverLoad ov = new OverLoad();
		ov.hap(32.6f, 46);
		ov.hap(34, 62);
		ov.hap(74.6f, 26.6f);
	}
}

public class OverLoad {
	public void hap(int a, int b) {
		System.out.println(a+b);
	}
	public void hap(float a, int b) {
		System.out.println(a+b);
	}
	public void hap(int a, float b) {
		System.out.println(a+b);
	}
}
  • 오버로딩 (Overloading) : 정적 바인딩(컴파일 시점에서 호출될 메서드가 이미 결정되어 있는 바인딩) 으로 속도와는 관계 없음.

## 오버로딩 (실습)

package kr.tpc;

public class OverLoad {
	public void hap(int a, int b) {
		System.out.println(a + b);
	}
	public void hap(float a, int b) {
		System.out.println(a + b);
	}
	public void hap(int a, float b) {
		System.out.println(a + b);
	}
}
import kr.tpc.OverLoad;

public class TPC17 {
	public static void main(String[] args) {
		OverLoad ov = new OverLoad();
		ov.hap(10, 15);		// ov.hap_int_int(10, 15)
		ov.hap(15.2f, 10);	// ov.hap_float_int(15.f, 10)
		ov.hap(10, 13.6f);	// ov.hap_int_float(10, 13.6f)
	}
}

 

# 동일한 구조와 이질적인 구조

## 배열과 클래스의 관계

  • 데이터를 담는 바구니, 하나의 객체

### 배열

  • 정수 5개 저장 공간 생성 시 (동일한 데이터) => Array 동일한 데이터 구조.
int[] arr = new int[5];


=>
구조 이름 : int[]
arr[0], arr[1], arr[2], arr[3], arr[4]

### 클래스

  • 영화 관련 저장 공간 생성 시 (동일한 데이터 아닌 경우) => class 서로 다른(이질적인) 데이터 구조.
public class MovieVO {
	private String title;
	private int price;
	private String author;
	private int level;
	private float time;
}
MovieVO vo = new MovieVO();	

=>
구조 이름 : MovieVO[]
클래스의 경우 구조 생성 후 객체 생성을 해야 메모리에 객체가 만들어짐.

// 객체배열
MovieVO[] vo = new MovieVO[5];
vo[0] = new MovieVO();
vo[1] = new MovieVO();
vo[2] = new MovieVO();
vo[3] = new MovieVO();
vo[4] = new MovieVO();

## 배열과 클래스의 관계 (실습)

  • 배열의 경우
public class TPC18 {
	public static void main(String[] args) {
		// 1. 정수 5개 저장하는 배열
		// 생성방법 - 1.
		int[] a = new int[5];
		a[0] = 10;
		a[1] = 20;
		a[2] = 30;
		a[3] = 40;
		a[4] = 50;

		// 생성방법 - 2.
		int[] b = {10, 20, 30, 40, 50};
		
		// 생성방법 - 3.
		int[] c = new int[] {10, 20, 30, 40, 50};
		
		// 출력방법
		for (int i = 0; i < b.length; i++) {
			System.out.println(b[i]);
		}		
	}
}
  • 클래스의 경우
package kr.tpc;

public class MovieVO {
	private String title;
	private int price;
	private String author;
	private int level;
	private float time;
	
	public MovieVO() {
		
	}

	public MovieVO(String title, int price, String author, int level, float time) {
		this.title = title;
		this.price = price;
		this.author = author;
		this.level = level;
		this.time = time;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public int getPrice() {
		return price;
	}

	public void setPrice(int price) {
		this.price = price;
	}

	public String getAuthor() {
		return author;
	}

	public void setAuthor(String author) {
		this.author = author;
	}

	public int getLevel() {
		return level;
	}

	public void setLevel(int level) {
		this.level = level;
	}

	public float getTime() {
		return time;
	}

	public void setTime(float time) {
		this.time = time;
	}

	@Override
	public String toString() {
		return "MovieVO [title=" + title + ", price=" + price + ", author=" + author + ", level=" + level + ", time="
				+ time + "]";
	}
}
import kr.tpc.MovieVO;

public class TPC18 {
	public static void main(String[] args) {
		// 2. 영화 데이터 저장(이질적인(서로다른)데이터 저장).
		MovieVO mv = new MovieVO("수학의 정석", 15000, "홍길동", 15, 1.3f);
		System.out.println(mv);
		
		// 영화 3편 저장
		MovieVO[] marr = new MovieVO[3];
		marr[0] = new MovieVO("과학의 정석1", 10000, "교수1", 12, 1.6f);
		marr[1] = new MovieVO("과학의 정석2", 15000, "교수2", 15, 1.1f);
		marr[2] = new MovieVO("과학의 정석3", 30000, "교수3", 5, 1.2f);
		
		System.out.println(marr[0].toString());
		System.out.println(marr[1]);
		System.out.println(marr[2]);
		
		for(int i = 0; i < marr.length; i++) {
			System.out.println(marr[i]);
		}
	}
}
반응형

+ Recent posts