💻 생성자
🎯 목표 : 생성자의 종류와 활용 방법 이해
📒 Constructor(생성자)
❗인스턴스 변수의 초기화
객체가 생성되면, 클래스 변수와 인스턴스 변수는 자동 기본값으로 초기화된다.
수의 데이터 타입들은 0 , boolean 은 false, 배열,문자열은 null
원하는 값으로 인스턴스 변수를 초기화 하려면 일반적인 방식으로 할수 없기 때문에 생성자 메소드를 정의하면서 값을 초기화 할수 있다.
❗생성자 조건
📌 생성자의 이름은 클래스의 이름과 같아야한다.
📌 return 값이 없지만 void를 붙이지 않는다.(생성자는 return 값이 항상 필요없다)
👉 기본(default) 생성자 예제
- 클래스명 () {} 로 기본 생성자가 구현된다.
- 같은 클래스 내에 이미 기본생성자가 있다면 기본생성자는 구현할수 없다.
class Animal2 {
Animal2 () { }// default 생성자
String neme;
void add (String b, String c) {
this.neme = b+c;
}
}
인스턴스(객체) a를 생성할때, new 연산자를 사용하여 정의해준다.
아래 예제에서 new Animal2();는 기본 생성자로서 기본 값을 자동으로 초기화 해주고 있다.
class Animal2 {
String neme;
void add (String b, String c) {
this.neme = b+c;
}
}
public class ConstructorStudy2 {
public static void main(String[] args) {
Animal2 a = new Animal2();
String x = "Dog";
String y = "Brid";
a.add(x,y);
System.out.println(a.neme);
}
}
👉 생성자 예제
- 생성자를 이용하여 원하는 값으로 인스턴스 변수를 초기화 해줄수 있다.
- 기본 생성자 틀에서 괄호 안에 데이타 타입을 정의해준 매개변수를 받아올수 있다.
class Animal {
Animal (String b, String c) {
this.add(b,c);
}
String neme;
void add (String x, String y) {
this.neme = x+y;
}
}
public class ConstructorStudy {
public static void main(String[] args) {
Animal a = new Animal("Dog","Bird");
System.out.println(a.neme);
}
}
//=====출력값 =====
// DogBird
하지만, 생성자 안의 this.add(b,c); 메소드가 없다고 가정한다면 출력값은 default 값(null)이 된다.
인스턴스 생성 할때 매개변수로서 값을 받아왔다 하더라도 생성자는 기본적으로 return 값이 없고 생성자로 작성된 매개변수의 처리를 구현하지 않았기 때문이다.
class Animal {
Animal (String b, String c) {
}
String neme;
void add (String x, String y) {
this.neme = x+y;
}
}
public class ConstructorStudy {
public static void main(String[] args) {
Animal a = new Animal("Dog","Bird");
System.out.println(a.neme);
}
}
//=====출력값 =====
// null
👉 생성자의 Overloading 예제
- 생성자는 오버로딩이 존재한다.
- 메소드 오버로딩과 같이 같은 생성자명으로 다른 기능을 하는 생성자를 만들수 있다.
- String 타입으로 매개변수를 입력받는 생성자와 int 타입으로 매개변수를 입력받는 생성자를 구현했다.
class Animal {
Animal (String b, String c) {
this.add(b,c);
}
Animal (int e, int f) {
this.sumup(e,f);
}
String neme;
void add (String x, String y) {
this.neme = x+y;
}
int sum;
void sumup (int x2, int y2){
this.sum = y2+x2;
}
}
public class ConstructorStudy {
public static void main(String[] args) {
Animal a = new Animal("Dog","Bird");
Animal t = new Animal(10,11);
System.out.println(a.neme);
System.out.println(t.sum);
}
}
- 코드를 실행하게되면 정상 실행 되는것을 확인할수 있다.
- 생성자도 Overloading 된다는 것을 확인 할수 있다.
'Language > JAVA' 카테고리의 다른 글
Java Initialized(초기화) (0) | 2022.08.20 |
---|---|
Java this(생성자, 참조변수)-OOP (0) | 2022.08.20 |
Java 기본형 / 참조형 매개변수 (0) | 2022.08.20 |
Java Overloading(오버로딩) - OOP (0) | 2022.08.19 |
Java Static과 Instance의 관계(OOP) (0) | 2022.08.17 |