클래스란?
클래스는 객체를 생성하기 위한 틀 혹은 설계도이다.
Animal이라는 클래스를 만든다고 하면,
동물의 종, 색상, 성별, 나이 등의 다양한 속성들을 가지고 있다.
이러한 속성들은 클래스 내에서 변수와 메서드로 정의된다.
이 Animal 클래스를 기반으로 만들어진 '동물'이 바로 객체이자 인스턴스라고 한다.
클래스와 객체
Animal 클래스를 기반으로 cat이라는 새로운 변수를 생성한다. >> Animal cat = new Animal();
이때 cat이 바로 "객체"가 된다.
그리고 "Animal이라는 클래스의 인스턴스"라고도 부른다.
cat, dog, horse 등 다양한 객체들을 Animal 클래스로 만들 수 있다.
객체 변수
Animal 클래스 영역에 선언하는 변수를 객체 변수라고 한다.
같은 말로 인스턴스 변수, 멤버 변수, 속성 이라고도 한다.
객체변수를 호출하거나 접근하려면 도트 연산자(.)를 이용해야 한다.
< 객체. 객체변수 >
ex) System.out.println(cat.name);
메서드
메서드란 클래스 내에 구현된 함수를 말한다.
클래스에 쓰일 속성을 만드는 방법 중 메서드를 이용하는 방법이 있다.
생성한 Animal 클래스 내에 특정 기능을 하는 메서드(함수)를 추가해 두면,
추후 객체와 속성을 지정할 때 해당 메서드를 호출하여 간편하게 이용할 수 있다.
이름을 지정하는 메서드를 만들 때
public void setName(String name) {
this.name = name;
}
이렇게 만들어 두면,
추후 cat이라는 객체를 생성하고 이름을 지을 때
cat.setName("geun");
이렇게 메서드를 호출해 주면 바로 이름을 부여해 줄 수 있다.
이때 this는 Animal 클래스에 의해 생성된 객체를 지칭한다.
객체 변수는 공유되지 않는다
클래스의 존재 이유, 클래스에서 가장 중요한 부분!
객체마다 고유의 객체변숫값을 부여할 수 있다!
/* 5-2 클래스
클래스는 과자틀, 객체는 과자!
*/
class Animal { // 클래스 생성
String name; // 클래스에 선언된 변수 : "객체변수 = 인스턴스변수 = 멤버변수 = 속성"
public void setName(String name) { // 메서드 생성
this.name = name; // this : 해당 클래스의 객체(cat) 의미함
}
}
public class Day12 {
public static void main(String[] args) {
Animal cat = new Animal(); // cat은 객체이자 Animal 클래스의 인스턴스다.
System.out.println(cat.name); // 객체.객체변수 형태로 접근 ; null 출력
cat.setName("boby"); // 객체.메서드명 : 메서드 호출
System.out.println(cat.name);
Animal dog = new Animal();
dog.setName("happy");
System.out.println(cat.name);
System.out.println(dog.name);
}
}