Day 08 :) 생성자

Nux·2021년 9월 9일
0

자바웹개발

목록 보기
8/105
post-thumbnail

생성자

  • 클래스와 이름이 같은 메서드
  • 클래스에 생성자가 정의되어있지 않으면 컴파일러가 자동으로 추가함
  • 반환값이 없음
class Car{
	Car(){}		// 생성자 메서드
    int plus() {}	//멤버메서드(메서드명이 생성자 메서드와 중복 될 수 없음)

멤버메서드와의 비교

실행가능시점반환타입이름호출
생성자 메서드객체생성직후없음class와 같아야 함new연산자
멤버 메서드호출 시다양함비교적 자유롭게 가능참조변수
★ 생성자 메서드 호출
1. Car.java
public class Car {	
	public Car(){
		System.out.println("안녕하세요");
	}	
}

2. CarApp.java
public class CarApp{
	public static void main(String[]args) {
	new Car();
    }
}

-> 안녕하세요가 출력됨
★ 멤버메서드 호출
1. Car.java
public class Car {	
	void example(){
    	System.out.println("안녕하세요");
	}	
}

2. CarApp.java
public class CarApp{
	public static void main(String[]args) {
		Car car = new Car();	// 참조변수 필요
		car.example();
}

-> 안녕하세요가 출력됨

매개변수가 있는 생성자

  • 인스턴스 생성과 동시에 원하는 값으로 초기화 가능
매개변수가 없는 생성자 
1. Car.java
class Car{
	String color;
    Car(){}

2. CarApp.java
public class CarApp {
	public static void main(String[]args) {	
		Car car = new Car();
		car.color = "White";		
	}
}


매개변수가 있는 생성자

1. Car.java
class Car{
	String color;
	Car(String c){}

2. CarApp.java
public class CarApp {
	public static void main(String[]args) {	
		new Car("White");		
	}
}
  • 한개라도 생성 될 시, 자동생성되는 생성자는 생성되지 않으므로 매개변수가 없는 생성자가 필요할 경우에는 따로 정의해야함
1.
class Product{
int x;
}

보이진 않지만 자동으로 생성자 Product(){}가 이미 정의되어 있음
2.
class Product{
int x;
new Product(int x){}
}

생성자가 이미 정의됐으므로 1의 Product(){}는 생성되지 않음
따라서 매개변수가 없는 생성자가 필요하면 아래와 같이 따로 정의 해야함

3.
class Product(){
int x;
Product(){}
Product(int x){}
}

this의 활용

  • 객체 생성시 자동 생성되는 변수
  • 스스로의 주소값을 갖고 잇음
  • 다른 생성자 호출 시 반드시 첫 줄에서만 가능
public class Car{
  String model;
  String gear;
  int door;
      Car(String model, String gear, int door){
        this.model = model;
        this.gear = gear;
        this.door = door;
      }
  }

0개의 댓글