클래스 (class)
- 객체(ex: 사물, 실체)를 정의하는 설계도
- 붕어빵 틀
- 레시피
- ...
객체, 인스턴스
객체 (Object)
- 실체
인스턴스 (Instance)
- 클래스와 객체의 관계
- 클래스로부터 객체를 선언 (인스턴스 화)
- 어떤 객체는 어떤 클래스의 인스턴스
클래스 사용
클래스: 객체를 만들기 위한 설계도
- 객체 변수, 메소드로 이루어짐

생성자 (Constructor)
- 객체가 생성될 때 자동으로 호출됨
생성자 규칙
- 클래스명과 이름 맞추기
- 리턴 타입 없음

this, this()
this
- 객체 자신을 의미
this()
- 생성자
실습 코드
// Car 클래스 - 객체변수, 메소드
class Car{
String name; // 변수 2개
String type; // 만들기
//생성자 같은 경우 클래스 이름과 동일하게. (생략 가능)
// Car() {}
public void printCarInfo(){ // void: 반환 값이 없다는 의미의 void
// printCarInfo: 메소드 명
// 메소드가 호출되었을 때 실행하고자 하는 코드
System.out.println("== Car Info ==");
System.out.println("name = " + name);
System.out.println("type = " + type);
}
public void move(){
System.out.println("이동!");
}
public void brake(){
System.out.println("정지!");
}
}
// Car2 클래스 - 생성자, this
class Car2 {
String name;
String type;
Car2(String name, String type){ // 생성자. 데이터를 직접 입력 받게끔
this.name = name;
this.type = type;
System.out.println("생성자 출력!");
}
public void printCarInfo(){ // void: 반환 값이 없다는 의미의 void
// printCarInfo: 메소드 명
// 메소드가 호출되었을 때 실행하고자 하는 코드
System.out.println("== Car Info ==");
System.out.println("name = " + name);
System.out.println("type = " + type);
}
public void load(){
System.out.println("짐을 주세요!");
}
public void horn(){
System.out.println("빵빵!");
}
}
public class Main {
public static void main(String[] args) {
// Car 클래스 사용
Car myCar1 = new Car();
myCar1.name = "a";
myCar1.type = "suv";
myCar1.printCarInfo(); // 각각의 메소드 출력
myCar1.move(); // 각각의 메소드 출력
myCar1.brake(); // 각각의 메소드 출력
// Car2 클래스 사용
Car2 myCar2 = new Car2("b", "sedan");
myCar2.printCarInfo();
myCar2.load();
myCar2.horn();
}
}
Practice
// 다음 클래스 직접 만든 후 객체 생성
// 클래스명: Animal
// 특성: 이름, 무게, 분류
// 기능: 먹기, 잠자기, 걷기, 뛰기
class Animal{
String name;
Double weight;
String classification;
//생성자 만들기
Animal(String name, Double weight, String classification){
// 이 값들을 모두 객체 변수로 할당
this.name = name;
this.weight = weight;
this.classification = classification;
}
// 기본적인 출력 넣기
public void printInfo(){
System.out.println("name = " + name);
System.out.println("weight = " + weight);
System.out.println("classification = " + classification);
}
// 메소드 추가
public void eat(){
System.out.println("냠냠!");
}
public void sleep(){
System.out.println("쿨쿨!");
}
public void walk(){
System.out.println("걷기!");
}
public void run(){
System.out.println("뛰기!");
}
}
public class Practice {
public static void main(String[] args) {
// Test code
Animal animal1 = new Animal("강아지", 5.0, "포유류");
Animal animal2 = new Animal("구피", 0.01, "어류");
animal1.printInfo();
animal2.printInfo();
}
}