Java
클래스 설계와 생성자의 활용
조충희
2025. 4. 15. 17:27
생성자 (constructor)
기본 생성자 / 사용자 정의 생성자
"필수적인 값을 넣도록 강제한다."
클래스의 인스턴스(객체)를 생성할때 호출되는 정해진 유형의 메서드이다.
객체가 생성될 때 가장 먼저 수행되는 코드이기도 하다.
! 기본 생성자
컴파일러가 자동으로 생성해준다.
! 사용자 정의 생성자
사용자가 필요에 의해 직접 생성자코드를 넣어주는 것을 가리킨다.
! 생성자 오버로딩이란
생성자가 여러개인 상황을 가리킨다.
package ch08;
public class Dog {
String name;
//사용자 정의 생성자
public Dog(String s) {
name = s;
}
/*
생성자는
객체가 만들어질 때
제일 먼저 수행하는 코드가 된다.
*/
} // end of class
package ch08;
public class DogMainTest1 {
// main
public static void main(String[] args) {
//Dog d1 = new Dog();
//d1.name = "흰둥이";
/*
개발자가 생성자를 직접 만들지 않으면
컴파일러가 자동으로 '기본 생성자'를 추가해준다.
*/
Dog d2 = new Dog("흰둥이");
System.out.println(d2.name); // 흰둥이
} // end of main
} // end of class
생성자의 문법
public 클래스명(매개변수) {
멤버변수 = 매개변수
}
기본 생성자 (default constructor)
개발자가 생성자를 하나라도 만들지 않으면
컴파일러가 .java 파일에서 => .class 파일로 변환할때
자동으로 코드를 넣어준다.
package ch08;
public class Student {
/*
생성자 (constructor)
객체를 생성할 때 특정 모양으로 객체를 만들라고 지시하는 것
강제성을 부여한다.
생성자는 객체를 생성할때 반드시 존재해야 한다.
*/
String name;
int number;
int grade;
/*
생성자의 문법
기본 생성자 (default constructor)
개발자가 생성자를 하나라도 만들지 않으면
컴파일러가 .java 파일에서 => .class 파일로 변환할때
자동으로 코드를 넣어준다.
*/
// 기본 생성자
// public Student() {}
// 사용자 정의 생성자
public Student(String s, int n, int g) { // 대소문자가 클래스 이름(Student)과 같아야 한다.
name = s;
number = n;
grade = g;
}
} // end of class
package ch08;
public class MainTest1 {
// main
public static void main(String[] args) {
// 인수 값
Student s1 = new Student("홍길동", 1, 3);
System.out.println(s1.name); // 홍길동
System.out.println(s1.number + "번"); // 1번
System.out.println(s1.grade + "학년"); // 3학년
} // end of main
} // end of class
생성자 예제
생성자가 여러개면 생성자 오버로딩이라고 한다.
package ch08;
// 사용자의 정보를 저장해보자. 나중에 쓰기 위해
public class UserInfo {
int userId;
String userPassWord;
String userName;
String userTell;
/*
생성자가 여러개라면
이를 생성자 오버로딩이라고 한다.
*/
//기본 생성자 모양
public UserInfo() {
}
//사용자 정의 생성자
public UserInfo(int uid) {
System.out.println("1.사용자정의생성자 호출됨");
// 멤버 변수 값을 초기화시키는 코드를 작성한다.
userId = uid;
}
public UserInfo(int uid, String p) {
userId = uid;
userPassWord = p;
}
public UserInfo(int uid, String p, String n) {
userId = uid;
userPassWord = p;
userName = n;
}
public UserInfo(int uid, String p, String n, String t) {
userId = uid;
userPassWord = p;
userName = n;
userTell = t;
}
} // end of class
package ch08;
public class UserInfoMainTest1 {
// main
public static void main(String[] args) {
// UserInfo u1 = new UserInfo();
// UserInfo u2 = new UserInfo(1);
// UserInfo u3 = new UserInfo(1, "p1");
// UserInfo u4 = new UserInfo(1, "p1", "김");
UserInfo u5 = new UserInfo(1, "p1", "김", "02-123-4567");
/*
생성자는
객체가 메모리에 올라갈 때
가장 먼저 수행되는 코드이다.
*/
} // end of main
} // end of class
생성자 예제
생성자를 사용하는 목적은 강제성을 부여하기 위함이다.
package ch09;
public class Bus {
// 속성
int busId;
String busType;
String busCompany;
// 생성자 - 생성자가 여럿 있으면 '생성자 오버로딩'
// public Bus(int id) {
// busId = id;
// }
// public Bus(int id, String bt) {
// busId = id;
// busType = bt;
// }
public Bus(int id, String bt, String bc) {
busId = id;
busType = bt;
busCompany = bc;
// 멤버변수 매개변수
}
// 메서드
public void showInfo() {
System.out.println("===== 상태창 =====");
System.out.println("버스 번호: " + busId);
System.out.println("버스 종류: " + busType);
System.out.println("버스 회사: " + busCompany);
}
} // end of class
package ch09;
public class BusMainTest1 {
// main
public static void main(String[] args) {
// Bus b1 = new Bus(133); // 강제성
Bus b1 = new Bus(133,"시내","텐코");
b1.showInfo();
/*
생성자를 사용하는 목적은
강제성을 부여하기 위함이다.
*/
} // end of main
} // end of class