4.1 메서드 오버로딩
메서드 오버로딩(method overloading)이란?
: 하나의 클래스에 같은 이름의 메서드를 여러 개 정의하는 메서드 오버로딩이라 함
조건
: 메서드의 이름이 동일해야 함
: 매개변수의 개수 또는 타입이 달라야 함
: 매개변수는 같고 리턴 타입이 다른 경우 오버로딩이 성립되지 않음 >> 리턴타입은 영향을 주지 않음
void println();
void println(boolean x);
void println(char x);
void println(char[] x);
void println(double x);
void println(float x);
void println(int x);
void println(long x);
void println(String x);
5.1 생성자
생성자(Constructor)란?
: 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드
: 인스턴스 변수의 초기화 또는 인스턴스 생성시 수행할 작업에 사용
: 몇가지 조건을 제외하고 메서드와 동일
: 모든 클래스에는 반드시 하나 이상의 생성자가 존재해야 함
생성자 조건
: 클래스의 이름과 동일해야 함
: 리턴 값이 없으며, void를 사용하지 않음
기본 생성자
: 매개변수가 없는 생성자
: 클래스에 생성자가 하나도 없을 경우 컴파일러가 기본 생성자를 추가함
: 단. 생성자가 존재할 경우 기본 생성자를 만들어주지 않기 때문에 기본 생성자를 직접 만들어주어야 함
클래스이름(타입 변수명, 타입 변수명, ...){
// 인스턴스 생성 시 수행될 코드
// 주로 인스턴스 변수의 초기화 코드를 적음
}
class Card{
Card(){ // 매개변수가 없는 생성자
// 인스턴스 초기화 작업
}
Card(String kind, int number{ // 매개변수가 있는 생성자
// 인스턴스 초기화 작업
}
}
public static void main(String[] args){
Card c = new Card();
// new에 의해 메모리(heap)에 Card 클래스의 인스턴스가 생성
// 생성자 Card()가 호출되어 수행
// 연산자 new의 결과로 생성된 Card인스턴스의 주소가 반환되어 참조변수 c에 저장
}
5.2 this(), this
this()란?
: 생성자, 같은 클래스의 다른 생성자를 호출할 때 사용
: 다른 생성자 호출은 생성자의 첫 문장에서만 가능
생성자를 이용해 인스턴스 복사가 가능
class Car{
String color;
String gearType;
int door;
}
Car(String color, String gearType, int door){
this.color = color;
this.gearType = gearType;
this.door = door;
}
Car(Car c){ // 생성자에서 참조변수를 매개변수로 받아 인스턴스 변수들의 값을 복사
this(c.color, c.gearType, c.door);
}
this란?
: 인스턴스 자신을 가리키는 참조변수
: 인스턴스의 주소를 가짐
: 모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재
6.1 변수의 초기화
: 변수를 선언하고 처음으로 값을 저장하는 것
: 멤버변수(인스턴스/클래스 변수)와 배열은 각 타입의 기본값으로 자동 초기화되어 초기화 생략 가능
: 지역변수는 사용 전 초기화 필수
6.2 멤버변수 초기화
1) 명시적 초기화(explicit initialization)
class Car{
int door = 4; // 기본형 변수 초기화
Engine e = new Engine(); // 참조형 변수 초기화
}
2) 생성자(constructor)
Car(String color, String gearType, int door){
this.color = color;
this.gearType = gearType;
this.door = door;
}
3) 초기화 블럭(initialization block)
- 인스턴스 초기화 블럭
: {}
:생성자에서 공통적으로 수행되는 작업에 사용되며, 인스턴스가 실행될 때마다 생성자보다 먼저 실행
- 클래스 초기화 블럭
: static {}
: 클래스 변수의 복잡한 초기화에 사용되며 클래스가 로딩될 때 실행
깃허브 링크 : https://github.com/Khjin06k/kostaJava/tree/main/src/day8/chap6_OOP1
'Kosta 교육' 카테고리의 다른 글
[Day13 - JAVA] chap9. lang 패키지_2 (0) | 2023.08.29 |
---|---|
[Day12 - JAVA] chap9. lang 패키지_1 (0) | 2023.08.29 |
[Day12] chap8. 예외처리 (0) | 2023.08.28 |
[Day7 - JAVA] chap6. 객체지향언어1_1 (0) | 2023.08.28 |
[Day3 - Java] 반복문 연습문제 - 피보나치 수열 나열하기 (0) | 2023.08.11 |