Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[Java] 생성자와 오버로딩(Overloading) 본문
오버로딩(Overloading)
(단, parameter 타입이나 개수가 달라야한다, 이에 따라 호출되어지는 함수가 다르다)
Why?
호출하기가 편하다, 사용자 편리성
💡 대표적인 오버로딩
System.out.println();
인자의 개수가 다르거나 타입이 다르다, overloading
- System.out.println();
- System.out.println('A');
- System.out.println(4);
- System.out.println("안녕");
System.out.println();
인자의 개수가 다르거나 타입이 다르다, overloading
- System.out.println();
- System.out.println('A');
- System.out.println(4);
- System.out.println("안녕");
println은 인자가 0개나 1개 들어오도록(2개이상x) 오버로딩 되어 있다.
그래서, 우리가 println으로 출력할때 인자를 문자열 연결 연산자 + 를 이용해서
하나의 인수로 만들어 출력한다.
생성자(Constructor)
modifier className() { // return type을 명시x
// 생성자 구현부
}
⚠️ 생성자를 따로 작성하지 않으면 Default 생성자(인수없는 생성자)가 자동으로 만들어진다.
(모든 객체는 한개 이상의 생성자를 가진다.)
오버로딩된 생성자
❓ 생성자 오버로딩이 왜 필요할까?
:'초기화하는 값(인수)'가 다를 수 있기 때문에
같은 클래스 내 다른 생성자 호출
⚠️ 생성자 구현부 첫째줄에서만 가능 => 하나의 생성자 안에서 한번만 호출 가능하다.
class Student {
String name;
int age;
String addr;
Student() { } // class Access modifier를 따른다
Student(String name, int age) {
this.name = name;
this.age = age;
}
// 생성자 오버로딩
Student(String name, int age, String addr) { // 데이터 초기화
this(name, age); // 같은 클래스 내 다른 생성자 호출
this.addr = addr;
}
}
public class ConstructorCallTest {
public static void main(String[] args) {
Student s1 = new Student("이몽룡", 18); // 객체가 생성되는 시점(new)에 생성자 딱 한 번 호출
System.out.println("이름: " + s1.name); // 이름: 이몽룡
System.out.println("나이: " + s1.age); // 나이: 18
System.out.println();
Student s2 = new Student("홍길동", 19, "옛날 어느 마을"); // 넘겨지는 인수의 개수나 타입이 다를 수 있다, overloading 필요
System.out.println("이름: " + s2.name); // 이름: 홍길동
System.out.println("나이: " + s2.age); // 나이: 19
System.out.println("주소: " + s2.addr); // 주소: 옛날 어느 마을
}
}
'Backend > 자바' 카테고리의 다른 글
[Java] 정보은닉과 Getter, Setter (0) | 2023.03.13 |
---|---|
[Java] GregorianCalender()와 아규먼트 인덱스 (0) | 2023.03.12 |
[Java] method와 method 호출방법 (0) | 2023.03.12 |
[Java] String과 StringBuilder (0) | 2023.03.12 |
[Java] Scanner클래스와 버퍼의 개행문자 (0) | 2023.03.12 |