본문 바로가기
Backend/JAVA

JAVA 생성자 설계하기

by YERIEL_염주둥 2020. 4. 22.
728x90

생성자 메서드

- 객체화(인스턴스화)될 때 실행되는 메서드
- 기본적으로 생략되어있으며, 메서드명은 클래스명과 동일하다.
- 기본값

class 클래스명 {

	접근지정자 클래스명(){
    
	}
}
package kr.or.ksmart;

class User2{
	private String name;
	public User2(){
		System.out.println("생성자 메서드 호출");
	}
}

public class JavaBasic02 {
	public static void main(String[] args) {
    
		User2 user2 = new User2();
		
	}
}

 

생성자 메서스의 위치

class 클래스명{

	필드
    
    생성자 메서드
    
    일반 메서드
}

 

생성자 메서드의 인수값

생성자 메서드에 인수값이 있을 경우 인스턴스화 할 때 일치하는 데이터 타입을 인수 삽입하고 인스턴스화 해야 한다.

package kr.or.ksmart;

class User3{
	public User3(String name){
		System.out.println("인수 있는 생성자 메서드 호출");
	}
}

public class JavaBasic02 {
	public static void main(String[] args) {

		User3 user3 = new User3("이순신");
		
	}
}

 

생성자 메서드의 오버 로딩

일반 메서드와 마찬가지로 오버 로딩이 가능하다.

package kr.or.ksmart;

class User2{
	private String name;
	public User2(){
		System.out.println("생성자 메서드 호출");
	}
	public User2(String name) {
		this.name = name;
		System.out.println("생성자 메서드 오버로딩 호출 -> " + this.name);		
	}
}

public class JavaBasic02 {
	public static void main(String[] args) {

		User2 user2 = new User2();
		User2 user3 = new User2("홍길동");

	}
}

 

생성자 메서드의 접근 지정자

package kr.or.ksmart;

class User4{
	private User4() {
		System.out.println("생성자 메서드 호출");
	}
}

public class JavaBasic02 {
	public static void main(String[] args) {

		User4 user4 = new User4();
		
	}
}

접근 지정자가 private 이기 때문에 인스턴스화가 되지 않음 오류 코드 
다른 방법으로 사용할 수 있지만 오늘은 모름 ㅋㅋㅋ

 

생성자 메서드의 인수값에 객체화 하기

package kr.or.ksmart;

class Car{
	private int num;
	private int gas;
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public int getGas() {
		return gas;
	}
	public void setGas(int gas) {
		this.gas = gas;
	}
}
class CreateCar{
	private Car car;
	public CreateCar(Car car) {
		this.car = car;
	}
	public void setNum(int num) {
		car.setNum(num);
	}
	public void setGas(int gas) {
		car.setGas(gas);
	}
	public Car getCar() {
		return car;
	}
}

public class JavaBasic03 {

	public static void main(String[] args) {
		CreateCar cc = new CreateCar(new Car()); //객체화 된것을 넘김
		cc.setGas(100);
		cc.setNum(1000);
		Car car = cc.getCar();
		System.out.println(car.getGas());
		System.out.println(car.getNum());
		
	}

}

 

 

실습

1. Sum 클래스를 인스턴스화 할 때 int형 데이터 인수 2개를 넘겨 인스턴스화 하고 getSum() 메서드로 합산 경과를 받아와 출력하여라.

package kr.or.ksmart;

class Sum{
	private int sum;
	public Sum(int n1, int n2) {
		this.sum = n1+ n2;
	}
	int getSum() {
		return sum;
	}
}

public class JavaBasicEx02 {

	public static void main(String[] args) {
		
		Sum sum = new Sum(78,69);
		System.out.println(sum.getSum());
	}

}
반응형

'Backend > JAVA' 카테고리의 다른 글

JAVA 다형성  (0) 2020.04.22
JAVA 상속  (0) 2020.04.22
JAVA 메서드 오버로딩  (0) 2020.04.22
JAVA 실습. 클래스  (0) 2020.04.21
JAVA 형 변환  (0) 2020.04.21

댓글