클래스 선언시 내부적으로 선언되어 생성된다.
클래스는 선언시 한번의 메소드를 선언하는데 그 메소드는
여러 객체의 공통적인 행동을 정의하고 있다. 즉 한번의 선언으로
여러 객체를 다루어야 한다. 그렇기 때문에 메소드 내에서 객체의
필드를 사용하고자 할 때 어떤 객체의 필드인지를 구분할 수 없다.
따라서 객체를 생성하거나 혹은 객체 . 을찍고 필드에 접근하는
순간 그 객체를 this 라는 변수가 받는다. 결과적으로 클래스
선언시 this.필드명 으로 접근하면 여러 객체도 하나의 메소드에서
다룰 수 있게된다.
this : 객체 구별용 변수
public class ClassTest { public static void main(String[] args) { Car mycar = new Car("Ferrari","Red",65000); Car momcar = new Car("K8", "White", 4000); Car dadcar = new Car(31000); System.out.println(mycar.brand); System.out.println(momcar.brand); mycar.engineStart(); } } class Car{ String brand; String color; int price; //생성자 오버로딩 과정 //클래스이름 + 자동완성 : 기본 생성자 만들기 public Car() {} //Alt + Shift + S > O : 필드를 이용해서 생성자 만들기 public Car(String brand, String color, int price) { this.brand = brand; this.color = color; this.price = price; } public Car(int price) { this.price = price; } void engineStart() { System.out.println(this.brand+" 시동켜기"); } void engineStop() { System.out.println(brand+" 시동끄기"); } }
객체를 여러개 선언해야 하는 경우 배열 타입으로 한번에 선언 후 사용
각 객체는 규칙성이 없기 때문에 규칙성을 부여하기 위해서 사용한다.
클래스명[] 배열명 = {
new 생성자(),
new 생성자(),
...
};
Square[] arSquare = {
new Square("가나", 20, 8),
new Square("미니맵", 40, 40),
new Square("돈", 100, 25)
};
}
class Square{
String name;
double height;
double width;
public Square(String name, double height, double width) {
this.name = name;
this.height = height;
this.width = width;
}
double getArea() {
return height*width;
}
배열명[idx] 방이 객체를 의미하게 된다.
배열명[idx].변수
배열명[idx].메소드()
for (int i = 0; i < arSquare.length; i++) {
System.out.println(arSquare[i].getArea());
}
public class Zoo {
public static void main(String[] args) {
//동물 세마리 만들어서 울게하기
animal samak = new animal("사막여우", 4, 25);
animal whiteTiger = new animal("백호", 20, 90);
animal jaegyueo = new animal("재규어", 10, 60);
// samak.cry();
// whiteTiger.cry();
// jaegyueo.cry();
animal[] arAnimal = {
new animal("사막여우", 14, 25),
new animal("백호", 19, 90),
new animal("재규어", 21, 60)
};
for (int i = 0; i < arAnimal.length; i++) {
arAnimal[i].cry();
System.out.println(arAnimal[i].getAction());
}
}
}
// 동물 클래스
// 이름, 나이, 몸무게, ...
// 먹기, 자기, 움직이기, 울기
class animal{
String name;
int age;
double kg;
public animal(String name, int age, double kg) {
this.name = name;
this.age = age;
this.kg = kg;
}
void cry() {
System.out.println(name+" ㅜㅜ");
}
void eat() {
System.out.println(name+" 맛있다!");
}
void sleep() {
System.out.println(name+" zzz...");
}
void action() {
System.out.println(name+" 움직여");
}
String getAction() {
return (name +"\n"+ age +"살\n"+ kg+"킬로그램\n");
}
}