클래스
클래스는 데이터(명사)와 기능(동사)로 이루어져있다.
class Employee{
String name; // 사원 이름
String dept; // 부서
int age; // 사원 나이
void print(){
System.out.printf("사원이름 : %s, 근무부서 : %s \n", name, dept);
return;
}
}
위와 같은 코드에서 class의 역할은 사원(Employee)객체의 정의이다.
name, dept, age는 사원의 정보로 명사에 해당한다.
print()는 사원의 정보를 '출력'하는 기능으로 동사에 해당한다.
이와 같이 클래스 내에서는 객체의 성질을 가진 명사(member variable)와 객체의 행동을 나타내는 동사(method)가 존재하게 된다.
정리하면, 클래스는 객체를 정의하는 설계도이다.
객체
그렇다면, 객체는 무엇일까?
객체는 클래스를 통해 만들어진 heap영역에 저장된 데이터이다.
클래스는 int, char, String과 같이 data type처럼 사용되며, 클래스를 통해 만들어진 각 객체는 독립적이다.
객체를 쉽게 이해하기 위하여 '사람'이라는 클래스가 있다고 가정해보자.
그리고 그 클래스를 통해 'chris', 'mike', 'alice'라는 객체를 찍어내자.
그러면 chris, mike, alice라는 객체 3개가 만들어지는 과정에서 class에 정보를 입력하지만, 그 정보는 각 객체에 전혀 영향을 끼치지 않는다.
public class Test01 {
public static void main(String[] args) {
Person chris = new Person("chris", 20, 'B');
Person mike = new Person("mike", 27, 'A');
Person alice = new Person("alice", 22, 'O');
chris.print();
mike.print();
alice.print();
}
}
class Person{
String name;
int age;
char bloodType;
public Person(String name, int age, char bloodType) {
super();
this.name = name;
this.age = age;
this.bloodType = bloodType;
}
public void print() {
System.out.printf("이름 : %s 나이 : %d 혈액형 : %c\n", name, age, bloodType);
}
}
이부분을 공부하다보니 4학년때 교수님이 OOP를 설명하시면서 하셨던 말씀이 생각난다.
class는 붕어빵 기계이고, 객체는 붕어빵 기계로부터 나오는 붕어빵이라고 생각해!
'언어 > JAVA' 카테고리의 다른 글
JAVA 입력 (0) | 2021.07.20 |
---|---|
Constructor 생성자 (0) | 2021.05.29 |
Method Overloading (0) | 2021.05.29 |
Setters, Getters (0) | 2021.05.26 |
JAVA (0) | 2021.05.26 |
댓글