생성자 ( Constructor )
package constructor;
class TestClass01{
public TestClass01() {
// 생성자는 객체를 만들때 자동으로 호출
System.out.println("생성자 실행");
}
public void test() {
System.out.println("test 호출");
}
}
public class Ex01 {
public static void main(String[] args) {
// 객체 생성, 생성자가 호출되어 자동으로 실행된다
// "생성자 실행" 문구 출력
TestClass01 t = new TestClass01();
}
}
생성자는 객체가 생성될때 자동으로 호출된다
package constructor;
class TestClass02{
private String officeName;
// 생성자
public TestClass02(String officeName) {
System.out.println("생성자 실행");
this.officeName = officeName;
// 생성자에서 초기화
}
// setter
public void setOfficeName(String officeName) {
this.officeName = officeName;
}
// getter
public String getOfficeName() {
return this.officeName;
}
}
public class Ex02 {
public static void main(String[] args) {
String name = "나의 회사";
TestClass02 t = new TestClass02(name);
// 객체를 만들때 생성자가 자동으로 호출,,,,,
// officeName 이 생성자의 코드에서 초기화 됨 - 생성자는 초기화하는 목적으로 사용
// ( 즉, setter 를 사용할 필요가 없음 )
// t.setOfficeName(name); // setter 호출
System.out.println(t.getOfficeName()); // getter 호출
}
}
생성자를 사용하는 이유
package constructor;
class TestClass03{
private String name, addr;
private int age;
// 생성자 선언
// setter 를 사용하지 않고 생성자를 통해 초기화
public TestClass03(String name, String addr, int age) {
this.name = name;
this.addr = addr;
this.age = age;
System.out.println("생성자를 통한 초기화");
}
// getter / setter 생성
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Ex03 {
public static void main(String[] args) {
TestClass03 t = null; // = new TestClass03();
// System.out.println(t);
// t.setAddr("aaa");
String name = "홍길동";
String addr = "산골짜기";
int age = 20;
t = new TestClass03(name, addr, age);
// t.setName(name);
// t.setAddr(addr);
// t.setAge(age);
System.out.println("이름 : " + t.getName());
System.out.println("주소 : " + t.getAddr());
System.out.println("나이 : " + t.getAge());
}
}
setter 를 사용하면 멤버변수의 갯수가 많아지면 많아질수록 코드가 길어지는데, 이때 생성자를 사용하여 간단하게 초기화를 시킬 수 있다
생성자 오버로딩
package constructor;
class TestClass04{
public TestClass04(int num) {
System.out.println("매개변수 받는 생성자");
}
// 생성자를 선언하는 순간 기본 생성자는 자동으로 소멸되기 때문에
// 생성자를 선언 후 기본 생성자가 필요하다면 따로 선언해줘야 한다
public TestClass04() {
System.out.println("기본 생성자 실행");
}
// 메소드 오버로딩
public void test() {
System.out.println("test 호출");
}
public void test(int num) {
System.out.println(num + " test 호출");
}
}
public class Ex04 {
public static void main(String[] args) {
TestClass04 t = null;
t = new TestClass04(20); // 매개변수 받는 생성자
t = new TestClass04(); // 기본 생성자 실행
// 오버로딩된 메소드 호출
// t.test(); // test 호출
// t.test(20); // 20 test 호출
}
}
생성자를 선언하면 기본 생성자는 소멸하기 때문에 무조건 기본 생성자는 선언해주는 것이 오류 예방에 좋다
728x90
'국비지원_핀테크' 카테고리의 다른 글
11일차_ [java] 유용한 클래스 ( 시간 출력, 코드 지연 ) (1) | 2024.02.19 |
---|---|
11일차_ [java] DTO ( Data Transfer Object ) (0) | 2024.02.19 |
10일차_ [java] 미니 실습 (0) | 2024.02.16 |
10일차_ [java] this, getter / setter (1) | 2024.02.16 |
10일차_ [java] 오버로딩 ( overloading ), 변수의 종류 (0) | 2024.02.16 |