개발 수업/JAVA
[Java] 클래스/this()
오늘 하루s
2023. 5. 17. 18:44
728x90
더보기
Day14-1. 230517
생성자
다른 생성자 호출 : this()
this() : 객체 자신의 또 다른 생성자를 호출할 때 사용.(동일 클래스 내에서 사용)
- 생성자 오버로딩이 많아지면 생성자 간의 중복된 코드 발생.
초기화 내용이 비슷한 생성자들에서 이런 현상 발생.
-> 초기화 내용을 한 생성자에 몰아 작성
-> 다른 생성자는 초기화 내용을 작성한 생성자를 this()로 호출.
※주의. 생성자의 첫 줄에서만 허용됨.
클래스([매개변수,...]){
this(매개변수,...,값,...);<--클래스의 다른 생성자 호출
실행문;
}
1
2
3
4
5
6
7
8
9
10
|
public Car06y(String company,int price) {
this.company=company;
this.price=price;
}
public Car06(String company) {
this.company=company;
}
public Car06(int price) {
this.price=price;
}
|
cs |
this()는 생성자 오버로딩에서 생기는 중복 코드를 제거 해줌.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
package chap0607;
import java.util.Date;
public class Car06 {
//field : data
private String company;
private int price;
private char grade; //에너지등급 예)'A','B'
private boolean isHybrid; //하이브리드유뮤 예)true,false
private Date productionDay; //생산일
//constructor
//생성자 오버로딩
public Car06() {}
public Car06( String company,int price,char grade,boolean isHybrid,Date productionDay) {
this.company=company;
this.price= price;
this.grade=grade;
this.isHybrid=isHybrid;
this.productionDay=productionDay;
}
public Car06(String company,int price) {
this(company, price, 'B' , false, new Date() );
}
public Car06(String company) {
this(company, 0, ' ' , false, null);
}
public Car06(int price) {
this("쌍용", price, 'B' , false, new Date());
}
}
|
cs |
메소드에서 오버라이드>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
package chap0607;
import java.util.Date;
public class Car06 {
//field : data
private String company;
private int price;
private char grade; //에너지등급 예)'A','B'
private boolean isHybrid; //하이브리드유뮤 예)true,false
private Date productionDay; //생산일
//constructor
//생성자 오버로딩
public Car06() {}
public Car06( String company,int price,char grade,boolean isHybrid,Date productionDay) {
this.company=company;
this. price= price;
this.grade=grade;
this.isHybrid=isHybrid;
this.productionDay=productionDay;
}
public Car06(String company,int price) {
this(company, price, 'B' , false, new Date() );
}
public Car06(String company) {
this(company, 0, ' ' , false, null);
}
public Car06(int price) {
this("쌍용", price, 'B' , false, new Date());
}
//메소드
public void showInfo() {
System.out.println("[company]="+company+
",[price]="+price+
",[grade]="+grade+
",[isHybrid]="+isHybrid+
",[productionDay]="+productionDay);
}
/* 내가 선언함.
@Override
public String toString() {
return "[company]="+company+
",[price]="+price+
",[grade]="+grade+
",[isHybrid]="+isHybrid+
",[productionDay]="+productionDay;
}
*/
@Override
public String toString() {
return "Car06 [company=" + company + ", price=" + price
+ ", grade=" + grade + ", isHybrid=" + isHybrid + ", productionDay=" + productionDay + "]";
}
}
|
cs |
Car06Main클래스>
1
2
3
4
5
6
7
8
9
10
11
12
|
package chap0607;
import java.util.Date;
public class Car06Main {
public static void main(String[] args) {
System.out.println(myCar1);
System.out.println(myCar1.toString());
myCar1.showInfo();
}
}
|
cs |
더보기
* 실행 결과
Car06 [company=좋은회사, price=0, grade= , isHybrid=false, productionDay=null]
Car06 [company=좋은회사, price=0, grade= , isHybrid=false, productionDay=null]
[company]=좋은회사,[price]=0,[grade]= ,[isHybrid]=false,[productionDay]=null
728x90