Java 기초 class(5) - 생성자
728x90
JDK : 1.8.0_261 버전 JRE : 1.8.0_261 버전 JAVA VERSION : 8 업데이트 261 Eclipse IDE VERSION : 2020-06버전 |
목표
클래스의 생성자에 대해 이해한다.
코드
PersonConstructor.java
package ex08Class;
/*
생성자(Constructor)
-클래스를 객체화(인스턴스)할 때 자동으로 호출되는 메소드
-자동으로 호출되며, 개발자가 임의로 호출할 수 없다.
-반환값이 없다. 즉 특정 연산후 값을 반환할 수 없다.
따라서 void를 쓰지 않는다.
-그외는 메소드가 가지 모든 특성을 가지고 있다(매개변수전달, 오버로딩 등)
생성자 내에서 this 사용법
용도1 : 동일 클래스 내에서 다른 생성자를 호출할 때 사용한다.
단, 생성자 내에서만 호출 가능하다.
사용법 :
this(인자1, 인자2,....)
용도2 : 생성자내에서 맴버변수와 매개변수의 이름이 동일할때
구분하기 위해서 사용된다.
this.변수 => 맴버변수
변수 => 생성자의 매개변수
단, 이름이 서로 다르다면 this는 생략해도 된다. 주로
명시적인 코드작성을 위해 사용된다.
*/
public class PersonConstructor {
//맴버변수
String name;
int age;
String addr;
//생성자 매소드
/*
디폴트 생성자
: 해당 클래스에 생성자를 정의하지 않은 경우에
아래와 같은 매개변수, 실행부가 없는 생성자가
자동으로 삽입된다. 단, 생성자를 하나라도 정의하면
디폴트 생성자는 삽입되지 않는다.(주의)
*/
//public PersonConstructor(){}
//생성자 1 : 기본 생성자
public PersonConstructor() {
name = "이름 없음";
age = 0;
addr = "미상";
System.out.println("나는 기본생성자 입니다.");
}
//생성자2 : 인자 생성자
public PersonConstructor(String name) {
//맴버변수와 매개변수를 구분하기 위해 this를 사용한다.
this.name = name;//좌측항은 맴버변수, 우측항은 매개변수
age = 1;
addr = "출처불명";
System.out.println("나는 인자생성자[1] 입니다.");
}
public PersonConstructor(String name, int age) {
/*
this()는 생성자내에서 다른 생성자를 호출할때 사용된다.
단, 생성자내에서만 사용가능하고, 일반 맴버메소드에서는
사용이 불가능하다.
*/
this(name, age, "미상");
System.out.println("나는 인자생성자[2] 입니다.");
}
public PersonConstructor(String _name, int age, String addr) {
//매개변수와 맴버변수명이 다르면 this를 쓰지 않아도 된다.
name = _name;
//변수명이 동일한 경우에는 this를 사용하는것을 권장한다.
this.age = age;
this.addr = addr;
System.out.println("나는 인자 생성자[3] 입니다.");
}
//맴버메소드 : 맴버변수를 초기화할 목적으로 정의한 메소드
void initialize(String name, int age, String addr) {
//해당코드는 생성자 내에서만 사용할 수 있다.
//this(name, age, "미상");
//맴버변수를 구분하기 위한 this는 맴버메서드에서도 사용가능하다.
this.name = name;
this.age = age;
this.addr = addr;
}
void showPersonInfo() {
System.out.printf("%s 님의 정보 \n", this.name);
System.out.printf("나이 : %d\n", age);
System.out.printf("주소 : %s\n", addr);
}
}
E05PersonConstructorMain.java
package ex08Class;
public class E05PersonConstructorMain {
public static void main(String[] args) {
//기본생성자를 통한 객체생성 및 초기화 메소드를 통한 맴버변수 초기화
PersonConstructor person1 = new PersonConstructor();
System.out.println("[맴버변수 초기화용 메소드 호출전]");
person1.showPersonInfo();
System.out.println("[맴버변수 초기화용 메소드 호출후]");
person1.initialize("홍길동", 20, "논현동");
person1.showPersonInfo();
/*
생성자를 통해 객체 생성과 초기화를 동시에 처리함.
*/
System.out.println("[이름만 전달한 값으로 초기화 하기]");
PersonConstructor person2 = new PersonConstructor("박길동");
person2.showPersonInfo();
System.out.println("[이름과 나이만 값으로 초기화하기]");
PersonConstructor person3 = new PersonConstructor("최길동", 40);
person3.showPersonInfo();
System.out.println("[모든 매개변수를 전달한 값으로 초기화하기]");
PersonConstructor person4 = new PersonConstructor("박길동", 50, "가산동");
person3.showPersonInfo();
}
}
앞에서 끝도 없이 강조한 생성자 입니다. 앞에서 이해했던 내용을 토대로 이 코드를 살펴봅시다.
결과 값
'Java > Java_기초부터 _끝까지' 카테고리의 다른 글
Java 기초 클래스 - 연습문제(1) (0) | 2020.11.10 |
---|---|
Java 기초 class(6) - 과일장수 (0) | 2020.11.09 |
Java 기초 class(4) (0) | 2020.11.06 |
Java 기초 class(3) - 클래스 안에 객체 (0) | 2020.11.06 |
Java 기초 class(2) - 다른 파일 (0) | 2020.11.05 |