yoni
[15][OOP] Constructor(생성자) 본문
[01] 생성자(Constructor, 생성자 메소드)
- 생성자(Constructor)는 객체 생성시 필드(전역변수)에 초기값을 할당할 수 있습니다.
메소드도 가능하나 객체 생성시 초기값을 전달하면 추가적으로 메소드 호출을 할 필요가
없습니다.
- 객체 생성과정: Food food = new Food();
① Food food: food 객체(변수) 선언
② new Food : Food 객체 생성, 메모리 할당
③ Food() : 생성자, 필드(메소드 외부에 있는 변수) 초기화
④ = : 생성된 객체를 객체 변수에 할당
- 생성자 메소드명은 클래스 이름과 대소문자도 일치해야 합니다.
리턴 타입이 선언되면 안됩니다. void 도 안됨.
예) Book.java --> public Book(){ ... }
Year.java --> public Year() { ... }
Rent.java --> public Rent() { ... }
- 생성자의 종류
. 기본 생성자: 필드에 자동으로 기본값을 할당, 파라미터가 없는 생성자, 생략 가능
예) public Java(){ ... }
. 인수(Argument, Parameter) 있는 생성자: 필드에 새로운 값을 객체 생성시에 지정 가능.
예) public Java(String dev, int year){ ... }
- 생성자는 생략가능하며 생략하면 필드에 데이터 타입의 기본값이 할당됨.
예) String: null, int: 0, double: 0.0, boolean: false, char: 공백 한칸
1. 기본 생성자, 인수있는 생성자의 사용
[실행 화면]
▷ /src/oop2/BookUse.java
메소드도 가능하나 객체 생성시 초기값을 전달하면 추가적으로 메소드 호출을 할 필요가
없습니다.
- 객체 생성과정: Food food = new Food();
① Food food: food 객체(변수) 선언
② new Food : Food 객체 생성, 메모리 할당
③ Food() : 생성자, 필드(메소드 외부에 있는 변수) 초기화
④ = : 생성된 객체를 객체 변수에 할당
- 생성자 메소드명은 클래스 이름과 대소문자도 일치해야 합니다.
리턴 타입이 선언되면 안됩니다. void 도 안됨.
예) Book.java --> public Book(){ ... }
Year.java --> public Year() { ... }
Rent.java --> public Rent() { ... }
- 생성자의 종류
. 기본 생성자: 필드에 자동으로 기본값을 할당, 파라미터가 없는 생성자, 생략 가능
예) public Java(){ ... }
. 인수(Argument, Parameter) 있는 생성자: 필드에 새로운 값을 객체 생성시에 지정 가능.
예) public Java(String dev, int year){ ... }
- 생성자는 생략가능하며 생략하면 필드에 데이터 타입의 기본값이 할당됨.
예) String: null, int: 0, double: 0.0, boolean: false, char: 공백 한칸
1. 기본 생성자, 인수있는 생성자의 사용
[실행 화면]
null
0 원
null
--------------
MySQL
0 원
null
--------------
화성 침공
0 원
null
--------------
자바
20000 원
왕눈이
--------------
JSP
25000 원
이로미
--------------
▷ /src/oop2/Book.java
-----------------------------------------------------------------------------------
package oop2;
public class Book {
String name; // 필드
int price;
String author;
public Book() { // 기본 생성자, 생략 가능
name = "도서명";
price = 0;
author = "저자";
}
public Book(String name){
this.name = name;
}
public Book(String name, int price, String author){
this.name = name;
this.price = price;
this.author = author;
}
public void setData(String name) { // 필드에 값 저장
this.name = name;
}
public void setData(String name, int price, String author) { // 필드에 값 저장
this.name = name;
this.price = price;
this.author = author;
}
public void print() {
System.out.println(name);
System.out.println(price + " 원");
System.out.println(author);
System.out.println("--------------");
}
}
-----------------------------------------------------------------------------------
▷ /src/oop2/BookUse.java
-----------------------------------------------------------------------------------
package oop2;
public class BookUse {
public static void main(String[] args) {
Book book = new Book(); // 기본 생성자 호출
book.print();
book = new Book("MySQL"); // 인수 있는 생성자 호출
book.print();
book.setData("화성 침공"); // 새로운 값 할당
book.print();
book = new Book("자바", 20000, "왕눈이"); // 인수 있는 생성자 호출
book.print();
// 새로운 값을 할당하기 위해 메소드 호출
book.setData("JSP", 25000, "이로미");
book.print();
}
}
-----------------------------------------------------------------------------------
▷ /src/oop2/BookUse.java
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
package oop2;
public class BookUse2 {
public static void main(String[] args) {
Book book = new Book(); // The constructor Book() is undefined
book.print();
}
}
-----------------------------------------------------------------------------------
* 인수 있는 생성자를 선언할 경우 기본 생성자 선언을 권장합니다.
[02] 이클립스에서 생성자 자동 생성하기
▷ /src/oop2/Constructor.java
-----------------------------------------------------------------------------------
package oop2;
package oop2;
public class Constructor{
String brand;
String cpu;
int ram;
int hdd;
boolean odd;
String graphic;
int usb20;
int usb30;
boolean wifi;
String comcase;
}
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
1. 기본 생성자의 생성
Eclipse > Source > Generate Constructors from Superclass...
2. 인수있는 생성자의 생성
Eclipse > Source > Generate Constructors from using Fields...
3. 자동으로 생성된 생성자
package oop2;
// 컴퓨터를 클래스로 선언하세요.
public class Constructor{
String brand;
String cpu;
int ram;
int hdd;
boolean odd;
String graphic;
int usb20;
int usb30;
boolean wifi;
String comcase;
public Constructor() {
}
public Constructor(String brand, String cpu, int ram, int hdd, boolean odd) {
this.brand = brand;
this.cpu = cpu;
this.ram = ram;
this.hdd = hdd;
this.odd = odd;
}
public Constructor(String brand, String cpu, int ram, int hdd, boolean odd,
String graphic, int usb20, int usb30, boolean wifi, String comcase) {
this.brand = brand;
this.cpu = cpu;
this.ram = ram;
this.hdd = hdd;
this.odd = odd;
this.graphic = graphic;
this.usb20 = usb20;
this.usb30 = usb30;
this.wifi = wifi;
this.comcase = comcase;
}
}
4. Eclipse에서의 Class 생성시의 기본 생성자 자동 생성
- 'Constructors from superclass' 체크'java of educational by contents' 카테고리의 다른 글
[16][OOP] package(Folder, Directory), Package Import (0) | 2018.12.01 |
---|---|
중간점검 test (0) | 2018.12.01 |
[14] 다양한 메소드의 리턴 실습 ★ (0) | 2018.12.01 |
[13][OOP] 값을 리턴하는 메소드, 문자열의 리턴, 숫자의 리턴 ★ (0) | 2018.12.01 |
3회차 code (0) | 2018.12.01 |
Comments