자바의 생성자와 생성자 오버로딩 그리고 예약어에 대해서 알아볼께.

생성자(Constructor)

자바의 생성자(Constructor)는 클래스로부터 객체가 생성될 때 초기화 과정을 기술하는 특수한 메소드야.

생성자의 이름은 클래스 이름과 같은데 이 특수한 메소드는 객체가 생성될 때 자동으로 한번만 수행되도록 되어 있어.

생성자도 멤버 변수 처럼 접근 제한자를 붙여줄 수 있는데 접근 제한자의 의미 역시 멤버 변수의 접근 제한자와 같다고 볼 수 있어.

단 생성자가 private로 선언되는 경우는 클래스 내부에서만 사용한다는 의미야.

[public/protected/private] 클래스이름(매개변수) {
	... //초기화 문장
}

아래는 생성자 메소드의 간단한 예제 코드야.

//캡슐화 클래스
class Box {
	//변수를 private로 선언하여 외부에서의 접근을 막음
	//정보의 은폐제공
	private int width;
	private int height;
	private int depth;
	private int vol;

	//클래스의 이름과 같은 이름으로 생성자 선언
	public Box(int a, int b, int c) {

		//초기화 작업 수행
		width = a;
		height = b;
		depth = c;

	}
	public int volume() {
		vol = width * height * depth;
		return vol;
	}
}

class BoxTestDemo {
	public static void main(String args[]) {
		int vol;
		Box mybox1 = new Box(10, 20, 30);
		vol = mybox1.volume();
		System.out.println("mybox1 객체의 부피 : " + vol);
	}
}

생성자 오버로딩(Overloading)

자바는 클래스에 하나 이상의 생성자를 중첩하여 사용할 수 있어. 단 여러 개의 생성자를 사용할 때는 생성자의 이름은 같을 수 있지만 매개변수의 타입과 개수는 달라야 해.

아래 두 개의 예제를 비교해서 살펴보면 오버로딩의 개념을 이해할 수 있을꺼야.

class Box {
	int width;
	int height;
	int depth;

	//4개의 생성자가 서로 다른 매개변수를 가짐
	public Box() {
		width = 1;
		height = 1;
		depth = 1;
	}
	public Box(int w) {
		width = w;
		height = 1;
		depth = 1;
	}
	public Box(int w, int h) {
		width = w;
		height = h;
		depth = 1;
	}
	public Box(int w, int h, int d) {
		width = w;
		height = h;
		depth = d;
	}
}

//클래스 생성
//매개 변수에 따라 자동 매칭
Box mybox1 = new Box();
Box mybox2 = new Box(5);
Box mybox3 = new Box(5, 10);
Box mybox4 = new Box(5, 10, 15);
class Box {
	int width, height, depth;
	double dwidth, dheight, ddepth;
	public Box(int w, int h, int d) {
		width = w;
		height = h;
		depth = d;
	}
	public Box(double w, double h, double d) {
		dwidth = w;
		dheight = h;
		ddepth = d;

	}
}

//클래스 생성
//매개 변수에 따라 자동 매칭
Box mybox1 = new Box(5, 10, 15);
Box mybox2 = new Box(20.3, 10.7, 15.23);

예약어 this

자바에서 this는 현재의 객체를 의미하는데 생성자나 메소드의 매개변수와 객체 변수가 같은 이름을 가지거나 같은 클래스내의 다른 생성자를 호출할 때 사용하는 예약어야.

아래는 this 예약어를 사용하는 두 가지 예제야.

class Box {
	int width;
	int height;
	int depth;

	public void Box(int width, int height, int depth) {
		//this.width는 현재 객체의 객체 속성 변수  width를 의미
		//this를 사용함으로써 같은 이름을 가진 객체 변수와 생성자 매개 변수의 이름으로 사용 가능
		this.width = width;
		this.height = height;
		this.depth = depth;
	}
}
//이 클래스는 어떤 형태로 객체가 생성되어도 결국 마지막 생성자가 호출
//여기서 사용된 this는 같은 클래스 내의 다른 생성자를 호출하는 역할을 함
class Box {
	int width;
	int height;
	int depth;
	public Box() {
		this(1, 1, 1);
	}
	public Box(int w) {
		this(w, 1, 1);
	}
	public Box(int w, int h) {
		this(w, h, 1);
	}
	public Box(int w, int h, int d) {
		width = w;
		height = h;
		depth = d;
	}
}

Share This Post

Leave a Reply

Your email address will not be published. Required fields are marked *

Latest Post

  • Criss Cross Crossover Crunch Flutter Kicks Heel Touch Knees Up Crunch Legs Lower Plank Side Plank Superman Arms Up Crunch Aquaman Catch Dish Oblique Crunch
  • Businesses can survive by constantly generating revenue by selling goods or services. Companies that do not have sales or profit can not survive. So it
  • Amazon CEO Jeff Bezos sends letters to shareholders every year. This letter contains Amazon’s current achievements and future vision. He also enclose that the first
  • A middle-aged man came to Pastor Norman Vincent Peale one day to ask him for counseling. The dejected man told Pastor Norman Vincent Peale. “Pastor,
  • I have been working as an IT freelancer for over 10 years and have had a chance to work with various clients. Working freelance, I
  • CNBC analyzed the minutes of the Berkshire Hathaway shareholders’ meeting to find out why Warren Buffett could be an excellent investor. It is already known,
  • Good timing is like a good choice. So what is ‘good choice’? A good choice is to decide what you need to do first. That
  • We learned that in childhood we should brush our teeth immediately after eating rice. However, this is a common misconception in the days when common
  • In most cases, it is important for novice marketers to work efficiently by reducing the waste of work and increasing focus. He will not used
  • source: vornado.com The circulator is the abbreviated name for ‘air circulator’. The air circulator actually has a different purpose than the fan. Unlike a fan