붕어빵틀(클래스) -- 붕어빵(객체, 인스턴스)
객체가 어떻게 생겼는지는 알 수 없다. 그럴 때 클래스를 보면 된다.
붕어빵틀. 객체를 만들어내기 위한 설계도. 객체가 필요할 때 만드는 게 클래스다.
객체를 만들기 위해서
클래스(상태,행위) -->instance화-->객체 ≒ instance(멤버변수,메소드)
인스턴스는 메모리에 할당된 객체.
붕어빵. 클래스로 구현해낸 거.
내생각 : 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는 멤버변수와 메소드밖에 없다.그러니까 지역변수에는 사용하지 못한다. 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);
}