JAVA(자바) - 매개변수 / 생성자
클래스는 필드에 변수(속성)를 가지고 있는데
객체에 속성을 부여하기 위해서 클래스 안에 생성자를 만들게 되는데 매개변수를 넣어
필드 = 매개변수 라고 적용을 해주는 것이다.
아래 코드에서 보면 Person (String name) 이 있는데 String name 은 필드 변수가 아닌
필드와 동일한 타입(자료형)을 가진 매개 변수이며
this.name 은 필드의 변수를 가리키는 this. 를 사용하여 혼동이 되지 않게
this.name(필드변수) = name (매개변수)를 가리키게 되는 것이다.
필드의 변수를 사용하지 않고 생성자를 만드는 것도 가능한데 그것을 디폴트 생성자(기본 생성자)라고 한다.
객체에 속성을 주지 않고 나중에 메인에서 따로 속성을 부여 할 수 있다.
이런 식으로 메인에서 직접 객체에 속성을 부여한 것이고 이 때 생성자가 필요하지 않지만
Person p2 = new Person("달님", 32);
이런식으로 클래스 객체를 사용하기 위해 등록하는 동시에 속성을 부여할 수도 있는데 이러기 위해선
생성자를 만들어 두어야 한다.
위에서 듯이 다른 방식으로 생성하기 위해서는 생성자 재정의를 통해 여러 생성자를 만들어서 다양한 방식으로 생성할 수 있게끔 설정해야 하는 것이다.
String name만을 가진 객체와 int age만을 가지고 있는 객체가 존재 할 수 있고, 아무런 속성을 가지지 않은 객체,
String name 과 int age를 가지고 있는 두개의 객체가 존재 할 수 있기 때문에 그럴 떄 마다 생성자가 필요 한 것이다.
이 과정을 생성자 오버라이딩 이라고 한다. (== 생성자 재정의)
class Person {
// 필드
String name; // 속성
int age;
Person(){ // 생성자
}
Person (String name){
this.name = name;
}
Person (int age){
this.age=age;
}
Person(String name,int age){
this.name=name; this.age=age;
} // 생성자 오버라이딩
// 안에 있는 매개변수 타입이 달라야 사용할 수 있다. 변수명이 달라도 같은 구조를 사용하면 안됨.
// 객체로 사용할 때 이름만 생성한 객체와 나이만 생성한 객체가 있을 수도 있는데
// 나이와 이름을 다 가진 객체를 사용할 수 있게 끔 하는 것이 오버라이딩 생성자 이다 .
'⚙️ Backend > JAVA' 카테고리의 다른 글
JAVA(자바) - 인스턴스 변수와 클래스 멤버 변수 (0) | 2020.11.13 |
---|---|
return **; 이란 무엇인가. (0) | 2020.11.11 |
JAVA(자바) - 상속(Inheritance) (0) | 2020.11.09 |
JAVA(자바) - 클래스와 객체 (0) | 2020.11.09 |
JAVA(자바) - 객체 지향 개념 (0) | 2020.11.08 |
댓글