Overloading
package ex1_overload;
public class OverloadTest {
//메서드 오버로드 : 메서드의 중복정의
//하나의 클래스 내에서 같은 이름을 가진 메서드가 여러개 정의된 것
//1. 메서드의 이름이 같아야 한다
//2. 파라미터의 개수가 달라야 한다
//3. 파라미터의 개수가 같다면 타입이 달라야 한다
//4. 파라미터의 개수가 같다면(2개 이상) 순서가 달라야 한다
public void result() {
System.out.println("인자가 없는 메서드");
}
public void result(int a) {
System.out.println("정수 인자가 한개인 메서드");
}
public void result(char c) {
System.out.println("문자 인자가 한개인 메서드");
}
public void result(int a,int b) {
System.out.println("정수 인자가 두개인 메서드");
}
public void result(int a, char c) {
System.out.println("정수, 문자 인자가 한개씩인 메서드");
}
public void result(char c, int a) {
System.out.println("문자, 정수 인자 한개씩인 메서드");
}
public void result(String s, int n) {
System.out.println("문자열, 정수 인자 한개씩인 메서드");
}
}
package ex1_overload;
public class OverloadMain {
public static void main(String[] args) {
OverloadTest ot = new OverloadTest();
ot.result();
ot.result(1);
ot.result('a');
ot.result(1,2);
ot.result(1,'a');
ot.result('a',1);
ot.result("홍",100);
}
}
Overloading 예제
package ex2_bread;
public class BreadTest {
public void makeBread() {
System.out.println("빵을 만들었습니다.");
}
public void makeBread(int n) {
for(int i=0;i<n;i++) {
System.out.printf("빵을 만들었습니다.\n");
}
System.out.printf("요청하신 빵을 %d개 만들었습니다\n",n);
}
public void makeBread(String b,int n) {
for(int i=0;i<n;i++) {
System.out.printf("%s빵을 만들었습니다.\n",b);
}
System.out.printf("요청하신 %s빵을 %d개 만들었습니다\n",b,n);
}
}
package ex2_bread;
public class BreadMain {
public static void main(String[] args) {
BreadTest bt = new BreadTest();
bt.makeBread();
System.out.println();
bt.makeBread(3);
System.out.println();
bt.makeBread("소금",2);
}
}
Constructor (생성자)
package ex4_person;
public class Person {
//생성자 : 객체가 생성 될 때 메모리 할당을 해주거나
//각 객체에 속해있는 변수들의 값을 초기화 할 때 사용
//생성자 특징
//1. 클래스와 이름이 완전히 동일
//2. 반환형이 없다
//3. 객체가 생설될 때 딱 한번만 자동으로 호출됨
String name;
int age;
String tel;
public Person(String name, int age, String tel) {
this.name = name;
this.age = age;
this.tel = tel;
}
public void pInfo() {
System.out.println("이름 : "+name);
System.out.println("나이 : "+age);
System.out.println("번호 : "+tel);
}
}
package ex4_person;
public class PersonMain {
public static void main(String[] args) {
Person p1 = new Person("홍길동",20,"010-1111-1111");
Person p2 = new Person("홍길순",38,"010-1234-1234");
p1.pInfo();
p2.pInfo();
}
}
생성자 오버로딩
package ex5_car;
public class Car {
//생성자 오버로딩
int price;
String color;
String brand;
public Car(String color, String brand, int price){
this.color = color;
this.brand = brand;
this.price = price;
}
public Car(String brand,int price) {
this.brand = brand;
this.price = price;
}
//this()를 통해 같은 클래스에 있는 생성자를 호출할 수 있다
public Car() {
this("white","kia",4000);
}
}
package ex5_car;
public class CarMain {
public static void main(String[] args) {
Car car1 = new Car("white", "현대", 3000);
Car car2 = new Car("현대",3000);
Car car3 = new Car();
System.out.printf("색상 : %s / 브랜드 : %s / 가격 : %d\n",car1.color,car1.brand,car1.price);
System.out.printf("색상 : %s / 브랜드 : %s / 가격 : %d\n",car2.color,car2.brand,car2.price);
System.out.printf("색상 : %s / 브랜드 : %s / 가격 : %d\n",car3.color,car3.brand,car3.price);
}
}