클래스, 객체(인스턴스), toString() , 생성자, this

제이·2023년 3월 17일
post-thumbnail

클래스

붕어빵틀(클래스) -- 붕어빵(객체, 인스턴스)
객체가 어떻게 생겼는지는 알 수 없다. 그럴 때 클래스를 보면 된다.
붕어빵틀. 객체를 만들어내기 위한 설계도. 객체가 필요할 때 만드는 게 클래스다.

객체 ≒ instance

객체를 만들기 위해서
클래스(상태,행위) -->instance화-->객체 ≒ instance(멤버변수,메소드)

인스턴스는 메모리에 할당된 객체.
붕어빵. 클래스로 구현해낸 거.

toString()

내생각 : toString()을 쓰는 이유는 다른 곳에서 객체를 생성하고 난 후에 그 객체에 대한 정보를 바꾸거나 할때 쓰는 것 같고, 약간 그 클래스 정보? 같은 거 담고 있는 것 같음. 그래서 그 객체를 출력할 때 사용하는 듯.

어디서 퍼온 거 : 1. getter의 사용을 지양 2.결과값을 쉽게 출력하려고

class DeskLamp {
	private boolean isOn;

	public void turnOn() {
		isOn = true;
	}

	public void turnOff() {
		isOn = false;
	}
	public String toString() {
		return "현재상태는" + (isOn ? "켜짐" : "꺼짐");
	}
}


class DeskLampTest {
	public static void main(String[] args) {
		DeskLamp myLamp = new DeskLamp();
		myLamp.turnOn();
		System.out.println(myLamp);
		myLamp.turnOff();
		System.out.println(myLamp);
	}
}

class Rectangle {
	int w;
	int h;
	
	public int area() {
		return w * h;
	}
	public int perimeter() {
		return 2 *(w + h);
	}
	
	public String toString() {
		String info = "w: " + w + "\n";
		info += "h: " +h + "\n";
		info += "area" + area() + "\n";
		info += "perimeter" + perimeter();
		return info;
	}
}

public class ObjectPractice {
	public static void main(String[] args) {
		Rectangle r = new Rectangle();
		r.w = 10;
		r.h = 5;
		System.out.println(r);
	}
	
}
//결과
w: 10
h: 5
area50
perimeter30

생성자

목적 : 초기화 작업들을 진행하기 위한 것.
생성자 수 : 객체를 만들 수 있는 경우의 수.
생성자수, 파라미터를 통해서 제공해야하는 사용자에게 정보를 강제시킬 수 있다.

this

this. : 현재 객체를 참조하기 위한 용도. 객체에 대한 참조값.
this는 멤버변수와 메소드밖에 없다.그러니까 지역변수에는 사용하지 못한다. main()에는 this 못쓴다.
메소드 안에서만 this를 쓸 수 있다. (먜 : stati메소드에서는 this 사용불가!!)

먜생각) this는 객체에 대한 참조값이기 때문에 아래 코드를 보면, Human의 객체의 멤버변수에 'this.'을 붙인다.

this() : 다른 생성자를 호출하는 것.
생성자도 다른 생성자를 호출해서 중복 코드를 제거 하기 위해서 오버로딩이 가능하다.
이때 다른 생성자를 호출하는 키워드가 this()이다.

Person(String name, int age, boolean isOk){
		this.name = name;
		this.age = age;
		this.isOk = false;
	}
	
Person(String name, int age){
		this(name, age, false);
	}
profile
Hello :)

0개의 댓글