Min's dev-log
[JAVA] 생성자 본문
생성자
함수의 한 종류로 클래스와 이름이 같다.
new 연산자와 함께 객체(인스턴스)를 생성한다.
또한 기본생성자가 디폴트로 존재하며, 주로 오버로딩하여 사용한다.
★ 기본생성자(디폴트생성자)
인자(input,매개변수,..)가 없는 생성자이며 기본 제공되는 생성자이다.
단 1개라도 생성자를 사용자가 정의하게 된다면, 더이상 기본제공 되지않는다.
"클래스로부터 객체를 생성하려면 반드시 생성자가 필요함!" -> 기본으로 제공
당연히 반죽을구워서 객체를 만들어 먹을거라고 생각하고 반죽(기본생성자)을 기본으로 제공하는 것이다.
생성자의 형태
클래스명(input)
: output이 없다. 당연히 객체가 반환되기 때문이다.
return도 쓰지않는다.
생성자 호출할 때 제일 처음이
클래스(){
// 멤버변수 전체를 선언한 후에 매개변수로 받은 것을 세팅해주고
// 안 받는것은 결과를 보고 유추해서 세팅해준다. }
★ 생성자의 역할 : 멤버변수 초기화 ★
+ 생성자를 만들 때 대체적으로 받은 값이 어디로 가는지 주목하면 된다!
기존멤버(부모의 멤버)한테 가면 -> super()
나한테만 있는 멤버(자식의 멤버)한테 가면 -> this.
▼ 생성자 오버로딩
class Circle{
String name;
int radius;
void info() {
System.out.println(name+": "+radius);
}
// 생성자 오버로딩 : "함수명 중복정의" 인자가 다름
// 생성자는 output이 당연히 객체이기때문에 쓰지않는다.
Circle(){
// 나중에 만들고싶을 때,그냥 기본생성자 만들어서 나중에 값을 넣어주고싶을 때
System.out.println("기본생성자");
}
Circle(String n, int r){ // 생성자 함수, 인자 두개, 내 멤버 변수를 초기화하는데 쓴다
name=n;
radius=r;
System.out.println("내가 정의한 생성자");
}
// 이 생성자만 선언시에 에러 -> Circle c1=new Circle();(기본생성자)에 에러가 생긴다.
// => Circle(String n, int r)생성자를 정의해서 기본생성자를 제공안하게 되어서 에러가 생긴것
// 기본생성자도 따로 만들어주면 된다.
}
public class Test04 {
public static void main(String[] args) {
// + 인자가 없는 생성자 = 기본생성자를 쓰고있는것(우리눈에 안보일뿐 숨어있기때문에 돌아간다)
Circle c1=new Circle(); // 기본 생성자
// => ★ 클래스를 하나 만들면 기본생성자를 무조건 하나 제공해준다
// 생성자를 하나 이상 만들게 되면 더이상 기본생성자는 제공되지않아서 따로 만들어줘야한다
c1.name="도넛";
c1.radius=10;
Circle c2=new Circle("피자",100); // 생성자(): 생성자함수
c1.info();
c2.info();
}
}
'JAVA' 카테고리의 다른 글
[JAVA] 객체 배열 (0) | 2023.05.03 |
---|---|
[JAVA] 클래스 변수 (0) | 2023.05.03 |
[JAVA] 클래스와 객체 (0) | 2023.05.01 |
[JAVA] 객체 지향 언어 (0) | 2023.05.01 |
[JAVA] 함수 유형별로 알아보기+ call by value / call by reference (0) | 2023.04.30 |
Comments