반응형
# 메서드 오버로딩 (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]);
}
}
}
반응형
'인프런 강의 학습 > Java TPC' 카테고리의 다른 글
Java TPC_12일차 수평적 구조와 수직적 구조 / 상속 / 오버라이드 (0) | 2022.01.17 |
---|---|
Java TPC_11일차 class (0) | 2022.01.13 |
Java TPC_9일차 정보은닉 / 잘 설계된 클래스 (0) | 2022.01.10 |
Java TPC_8일차 private 생성자 / class, object, instance 상호관계 (0) | 2022.01.09 |
Java TPC_7일차 기본 자료형(PDT), 사용자 정의 자료형(UDDT), 객체 생성과정 (0) | 2022.01.08 |