728x90
생성자
생성자는 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화할 수 있습니다. 즉, 생성자는 객체를 초기화 하기 위해 사용합니다.
생성자의 특징
- 생성자의 이름은 해당 클래스와 이름이 같아야 한다.
- 생성자는 반환값이 없지만, 반환 타입을 void형으로 선언하지 않는다.
- 생성자는 초기화를 위한 데이터를 인수로 전달받을 수 있다.
- 하나의 클래스가 여러 개의 생성자를 가질 수 있다. (메서드 오버로딩)
생성자의 호출
new 키워드를 사용하여 객체를 생성할 때 자동으로 생성자가 호출됩니다.
package class05;
class Circle {
String name;
int radius;
double PI;
double area;
Circle(String name, int radius) {
this.name = name;
this.radius = radius;
this.PI = 3.14;
this.area = radius * radius * PI;
}
}
public class Test01 {
public static void main(String[] args) {
Circle c1 = new Circle("피자", 10);
Circle c2 = new Circle("도넛", 1);
}
}
기본 생성자
모든 클래스에는 하나 이상의 생성자가 정의되어 있어야 합니다. 하지만 생성자를 선언하지 않아도 기본적으로 생성되는 생성자가 있습니다. 이것을 기본 생성자라고 하며 자바 컴파일러가 기본적으로 제공해 줍니다. 기본 생성자는 매개변수를 하나도 가지지 않으며, 아무런 명령어도 포함하고 있지 않습니다.
package class04;
class Circle {
String name;
int radius;
void printInfo() {
System.out.println(this.name + "은 넓이가 " + this.radius * this.radius * 3.14 + "입니다.");
}
}
public class Test03 {
public static void main(String[] args) {
Circle circle1 = new Circle();
Circle circle2 = new Circle();
circle1.name = "원1";
circle1.radius = 5;
circle2.name = "원2";
circle2.radius = 7;
circle1.printInfo();
circle2.printInfo();
}
}
this / this()
this
this 참조 변수는 인스턴스가 자기 자신을 참조하는데 사용하는 변수입니다. 생성자의 매개변수 이름과 인스턴스 변수의 이름이 같을 경우에는 인스턴스 변수 앞에 this 키워드를 붙여 구분해야 합니다.
package class06;
class A {
int a;
int b;
int c;
int d;
int e;
int f;
int g;
int h;
A(int a, int b, int c, int e, int f, int g, int h){
// this == 자기자신객체
this.a = a;
this.b = b;
this.c = c;
this.d = 0;
this.e = e;
this.f = f;
this.g = g;
this.h = h;
}
}
this()
this() 메서드는 생성자 내부에서만 사용할 수 있습니다. 같은 클래스의 다른 생성자를 호출할 때 사용하며 this() 메서드에 인수를 전달하면 생성자 중에서 메서드 시그니처가 일치하는 다른 생성자를 찾아 호출해 줍니다.
package class08;
class Point {
int x;
int y;
Point() {
this(0, 0);
}
Point(int x) {
this(x, x);
}
Point(int x, int y) {
this.x = x;
this.y = y;
}
}
GitHub
https://github.com/Qkrwnsgus0522/Java
728x90