생성자
객체가 new 연산자를 통해 Heap 메모리 영역에 할당될 때
객체 안에서 만들어지는 필드 초기화, 생성 시 필요한 기능 수행
생성자는 일종의 메소드로 전달된 초기값을 받아서 객체의 필드에 기록
생성자 규칙
생성자의 선언은 메소드 선언과 유사한 반환 값이 없다
생성자명은 무조건 class명(대/소문자)과 똑같이 작성하여야한다
기본 생성자
기본생성자를 작성하지 않을 경우, JVM이 자동으로 기본 생성자 생성해준다.
public class Const {
// 1. 필드
private String name;
private int age;
private char gender;
// 2. 생성자
// 기본생성자만 있을경우 생략가능
public Const() {
// 기본 생성자
}
}
매개변수 생성자
매개변수 생성자를 작성하면, JVM이 자동으로 기본생성자를 생성을안해준다.
Const.class
public class Const {
// 1. 필드
private String name;
private int age;
private char gender;
// 2. 생성자
public Const() {
// 기본 생성자
}
public Const(String name) {
this.name = name;
}
public Const(String name, int age) {
this.name = name;
this.age = age;
}
public Const(String name, int age, char gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
// 3. 메소드
public String information() {
return "name = " + name + ", age = " + age + ", gender = " + gender;
}
}
Run.class
public class Run {
public static void main(String[] args) {
Const c1 = new Const(); //기본생성자로 객체생성
Const c2 = new Const("홍길동", 55, '남'); //매개변수가 있을때 객체생성
System.out.println(c1.information());
System.out.println(c2.information());
}
}
꼭 getter/setter 이용하지않고 초기화 하는방법입니다.
생성자를 이용해 초기화를 진행하면 코드도 깔끔하고 번거로움도 줄어들어서 많이사용하게될거같습니다.
오버로딩
한 클래스 내에 동일한 이름의 메소드를 여러개 작성한는것
오버로딩 조건
1. 같은 메소드 이름
2. 다른 매개변수의 개수 또는 다른 매개 변수 타입
위에 생성자작업할때처럼 기본생성자와 매개변수 있는 생성자를 동시에 작성한것도 오버로딩이다.
아래의 코드처럼 메소드 이름은 같고 매개변수 갯수만 다르면 오버로딩이다.
public class Const {
// 1. 필드
private String name;
private int age;
private char gender;
// 2. 생성자
public Const() {
// 기본 생성자
}
public Const(String name) {
this.name = name;
}
public Const(String name, int age) {
this.name = name;
this.age = age;
}
public Const(String name, int age, char gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
// 3. 메소드
public String information() {
return "name = " + name + ", age = " + age + ", gender = " + gender;
}
}
this()
자신이 가지고있는 주소의 객체 의 생성자를 호출하는 메소드 이다.
this() 조건
무조건 첫줄에 작성하여야한다.
public class Const {
// 1. 필드
private String name;
private int age;
private char gender;
// 2. 생성자
public Const() {
// 기본 생성자
}
public Const(String name) {
this.name = name;
}
public Const(String name, int age) {
this.name = name;
this.age = age;
}
public Const(String name, int age, char gender) {
// this.name = name;
// this.age = age;
// 아래와 같이 this(name, age); 로작성하면 바로위에 매개변수 2개 지정되어잇는 생성자가
// 호출되어 대입된다.
this(name, age); //주석은 코드로인식을 하지않기때문에 첫줄로 작성되어있는것으로 확인할수있다.
this.gender = gender;
}
// 3. 메소드
public String information() {
return "name = " + name + ", age = " + age + ", gender = " + gender;
}
}
'프로그래밍 > JAVA' 카테고리의 다른 글
JAVA - 객체 배열 (0) | 2021.05.25 |
---|---|
JAVA - 객체(4편) (0) | 2021.05.25 |
JAVA - 객체(2편) (0) | 2021.05.24 |
JAVA - 객체(1편) (0) | 2021.05.23 |
JAVA - 2차원 배열 (0) | 2021.05.23 |