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 |
댓글을 사용할 수 없습니다.