* 생성자
public class Car {
String name;
int number;
}
public class CarExam {
public static void main(String[] args) {
Car c1 = new Car(); // Car() : 기본생성자
Car c2 = new Car();
}
}
- 모든 클래스는 인스턴스화 될 때 생성자를 사용한다.
- 생성자는 리턴타입이 없다.
- 생성자를 프로그래머가 만들지 않으면 매개변수가 없는 생성자가 컴파일할 때 자동으로 만들어진다.
- 매개변수가 없는 생성자를 기본생성자라고 한다.
- 생성자를 하나라도 프로그래머가 만들었다면 기본생성자는 자동으로 만들어지지 않는다.
* 매개변수가 있는 생성자
public class Car2 {
String name;
int number;
public Car2(String n) {
name = n;
}
}
public class CarExam {
public static void main(String[] args) {
Car2 c1 = new Car2(); // 오류가 난다.
Car2 c2 = new Car2("소방차");
}
}
* this
public class Car2 {
String name;
int number;
public Car2(String n) {
name = n; // n은 name? number? 매개변수는 무엇인지 알아보기 쉽게 직관적으로 쓴다.
}
}
-------------------------------------
public Car2(String n) {
name = name; // 가깝게 선언된 변수를 우선 사용하기 때문에 둘 다 매개변수의 name이 된다.
}
- Class CarExam에서 c1.name을 출력하면 null이 출력된다.
--------------------------------------
public Car2(String n) {
this.name = name; // this : 객체 자신을 참조하는 키워드
}
- ( this.name : 필드 name ) = ( 매개변수 name )
- 매개변수의 값을 필드에 대입하시오.
- 클래스 안에서 자기 자신이 가지고 있는 메소드를 사용할 때도 this.메소드명()으로 호출가능.
- 나의 생성자를 사용할 때도 this 키워드를 이용해서 사용가능.
* Enum
public class EnumExam {
public static final String MALE="MALE";
public static final String FEMALE="FEMALE";
public static void main(String[] args) {
String gender1;
gender1 = EnumExam.MALE;
gender1 = EnumExam.FEMALE;
gender1 = "boy";
System.out.println(gender1); // 출력 : boy
}
}
- 상수를 사용했때의 문제점
String으로 선언된 gender1 에는 MALE, FEMALE 둘 중 한가지 값을 갖기 원하는데 gender1의 type이 String 이기 때문에 gender1 = "소년";으로 수행 되어도 전혀 문제가 되지 않는다. 실행할때 원했던 값인 MALE, FEMALE 이 아닌 다른 값이 들어오게 되므로 문제를 발생시킬 수 있다.
public class EnumExam {
public static void main(String[] args) {
Card card1,card2;
card1 = Card.CLOVER;
card2 = Card.DIAMOND;
card1 = "CLOVER" // 오류
card1 = 1 // 오류 -> 다른 값은 저장할 수가 없다.
System.out.println(card1); // 출력 : CLOVER
System.out.println(card2); // 출력 : DIAMOND
System.out.println(card1.getClass().getName()); // 변수형 출력 : first230331.Card
// 특정 값만 가져야 한다면 열거형을 사용하는 것이 좋다.
}
}
enum Card{
DIAMOND,CLOVER,HEART,SPADE;
}
'STUDY > JAVA' 카테고리의 다른 글
230403 공부기록 (0) | 2023.04.04 |
---|---|
230401 공부기록 (0) | 2023.04.04 |
230330 공부기록 (0) | 2023.03.31 |
230329 공부기록 (0) | 2023.03.30 |
자바파일을 String으로 저장하지 말 것. (0) | 2023.03.29 |