생성자는 일종의 메서드로, 전달된 초기값을 받아서 객체의 필드에 기록
객체 생성 + 필드 초기화 + 필요한 기능 수행 ⭐ public 원칙 !
기본 생성자
매개변수 생성자 (코드 길이를 줄이기 위해서 사용)
⭐ 생성자의 선언은 메서드의 선언과 유사하나 반환값이 없으며,
생성자명을 클래스명과 똑같이 지정해주어야 한다.
한 클래스 내에 동일한 이름의 메서드를 매개변수만 다르게 하여
여러 개 정의하는 것 (파이썬에서는 지원하지 않음)
예) println() 메서드
오버로딩 조건
💥 주의 : 매개변수의 순서가 달라도 서로 다른 메서드로 인식한다!
public void method(int intI, String strS) { }
≠ public void method(String strS, int intI) { }
모든 인스턴스의 메서드에 숨겨진 채 존재하는 레퍼런스로, 할당된 객체를 가리킴
인스턴스 변수와 지역 변수를 구분하기 위해 사용
함수 실행 시 전달되는 객체의 주소를 자동으로 받음
생성자 내에서 같은 클래스의 다른 생성자를 호출할 때,
중복 제거를 통한 코드 길이 감소 효과를 위해서 사용
⭐ 반드시 첫 번째 줄에 선언해야 한다 !
package java.io;
import java.util.Formatter;
import java.util.Locale;
import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException;
import java.nio.charset.UnsupportedCharsetException;
public class PrintStream extends FilterOutputStream
implements Appendable, Closeable
{
/* Methods that do terminate lines */
public void println() {
newLine();
}
public void println(boolean x) {
synchronized (this) {
print(x);
newLine();
}
}
public void println(char x) {
synchronized (this) {
print(x);
newLine();
}
}
public void println(int x) {
synchronized (this) {
print(x);
newLine();
}
}
public void println(long x) {
synchronized (this) {
print(x);
newLine();
}
}
public void println(float x) {
synchronized (this) {
print(x);
newLine();
}
}
public void println(double x) {
synchronized (this) {
print(x);
newLine();
}
}
public void println(char x[]) {
synchronized (this) {
print(x);
newLine();
}
}
public void println(String x) {
synchronized (this) {
print(x);
newLine();
}
}
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
}
package kh.oop1.day03.exam;
public class ThisConstructor {
private String bookName; // 책이름
private int bookprice; // 책가격
private String bookpublisher; // 출판사
private int bookid; // 책아이디
public ThisConstructor() {}
public ThisConstructor(String bookpublisher) {
this.bookpublisher = bookpublisher;
}
public ThisConstructor(String bookName, int bookprice, int bookid) {
this("DONICODE");
this.bookName = bookName;
this.bookprice = bookprice;
this.bookid = bookid;
}
}