반응형
*생성자 (constructor)
- 객체 지향 프로그래밍에서 객체의 초기화를 담당하는 서브루틴을 가리킨다. 생성자는 객체가 처음 생성될 때 호출되어 멤버 변수를 초기화하고, 필요에 따라 자원을 할당하기도 한다. 객체의 생성 시에 호출되기 때문에 생성자라는 이름이 붙었다. 생성자는 대체로 멤버 함수와 같은 모양을 하고 있지만, 값을 반환하지 않는다는 점에서 엄밀한 의미의 함수는 아니다.
- C++, 자바, C# 등의 언어에서 생성자는 클래스의 이름과 같은 이름을 갖는다. 또한 이들 언어에서는 함수 인자의 개수와 타입에 따라 여러개의 서로 다른 생성자를 정의할 수 있다.
//생성자 관련 예제
class Main {
public static void main(String[] args) {
사람 a김철수 = new 김철수();
사람 a김영희 = new 김영희();
a김철수.배달_음식_주문하다();
// 영화반점에서 김철수(010-1234-1234)에게 매운 짬뽕(을)를 배달합니다.
a김영희.배달_음식_주문하다();
// 북경반점에서 김영희(010-4321-4321)에게 안매운 짬뽕(을)를 배달합니다.
a김영희.a좋아하는_음식점 = a김철수.a좋아하는_음식점;
a김영희.선호하는_음식의_매운정도 = "아주 매운";
a김영희.선호하는_음식 = "짜장";
a김영희.배달_음식_주문하다();
// 영화반점에서 김영희(010-4321-4321)에게 아주 매운 짜장(을)를 배달합니다.
}
}
class 사람 {
String 이름;
String 전화번호;
String 선호하는_음식의_매운정도;
String 선호하는_음식;
음식점 a좋아하는_음식점;
void 배달_음식_주문하다() {
a좋아하는_음식점.주문(이름, 전화번호, 선호하는_음식, 선호하는_음식의_매운정도);
}
}
abstract class 음식점 {
abstract void 주문(String 주문자명, String 주문자_전화번호, String 음식, String 매운정도);
}
class 영화반점 extends 음식점 {
void 주문(String 주문자명, String 주문자_전화번호, String 음식, String 매운정도) {
System.out.println("영화반점에서 " + 주문자명 + "(" + 주문자_전화번호 + ")에게 " + 매운정도 + " " + 음식 + "(을)를 배달합니다.");
}
}
class 북경반점 extends 음식점 {
void 주문(String 주문자명, String 주문자_전화번호, String 음식, String 매운정도) {
System.out.println("북경반점에서 " + 주문자명 + "(" + 주문자_전화번호 + ")에게 " + 매운정도 + " " + 음식 + "(을)를 배달합니다.");
}
}
class 김철수 extends 사람 {
김철수() {
이름 = "김철수";
전화번호 = "010-1234-1234";
a좋아하는_음식점 = new 영화반점();
선호하는_음식의_매운정도 = "매운";
선호하는_음식 = "짬뽕";
}
}
class 김영희 extends 사람 {
김영희() {
이름 = "김영희";
전화번호 = "010-4321-4321";
a좋아하는_음식점 = new 북경반점();
선호하는_음식의_매운정도 = "안매운";
선호하는_음식 = "짬뽕";
}
}
// 생성자 관련 예제
반응형
'프로그래밍 > 자바, JDBC' 카테고리의 다른 글
문자열 특정문자 기준으로 나누기(split) (0) | 2020.04.27 |
---|---|
추상클래스(abstract) (0) | 2020.04.27 |
자바 문자열, int형 길이(자릿수) 구하기 (0) | 2020.04.27 |
특정 문자열 포함여부 확인(contatins) (0) | 2020.04.23 |
문자열 병합(concat), 분할(substring) (0) | 2020.04.23 |