객체와 클래스
클래스(class)
- 클래스는 자바에서 설계도 이다.
- 인스턴스(instance): 클래스로부터 만들어진 객체
- 객체지향 프로그래밍 단계: 클래스 설계 -> 설계된 클래스로 사용할 객체 생성 -> 객체 이용
예시1) 자동차 객체는 자동차 클래스의 인스턴스 이다.
클래스 선언
사용하고자 하는 객체를 구상후 클래스 이름을 결정한다.
클래스 이름은 다른클래스와 식별할 목적으로 사용되므로 자바의 식별자 작성 규칙에 따라 만들어야한다.
- 하나 이상의 문자로 이루어져야 한다.
- ex) Car, SportsCar
- 첫 글자에는 숫자가 올 수 없다.
- ex) Car, 3Car(x)
- '$', '_'외의 특수 문자는 사용할 수 없다.
- ex) $Car, _Car, @Car(x), !Car(x)
- 자바 키워드는 사용할 수 없다.
- ex) int(x), for(x)
클래스 이름을 한글로 해도 되나, 한글로 사용하는 경우는 거의 없다.
또한, 클래스 이름이 두개 단어 이상인 경우 낙타표기법으로 사용한다. ex) JavaBook
'클래스 이름.java'로 소스파일을 생성하고, 파일안에 클래스를 선언하여 이용한다.
(이클립스로 하면.. 이거 안해도 다 알아서 해준다..그래도 원리는 알아야하니,)
//Exam 클래스 선언
pulbic class Exam{
}
public class 는 소문자로 표기한다.
Exam 은 클래스 이름
클래스 이름 뒤에 중괄호{ } 를 사용
시작 중괄호 {는 클래스의 선의 시작
끝 중괄호 }는 클래스 선언의 끝을 알려준다.
객체 생성과 클래스 변수
클래스를 선언한 다음, 컴파일을 했다면(이클립스에서는 저장) 객체를 생성할 설계도가 만들어진 셈이다.
클래스로 부터 객체를 생성하려면 new 연산자를 이용하면된다.
new 클래스();
new연산자로 생성된 객체는 메모리 힙 영역에 생성 된다.
클래스로 선언된 변수에 new 연산자가 리턴한 객체의 번지를 저장하는 코드
클래스 변수;
변수 = new 클래스();
클래스 변수 = new 클래스();
두 방법 모두 같은 결과이다.
예시2)
public class Student{
}
public class StudentEx{
public static void main(String[] args){
Student s1 = new Student();
System.out.println("s1 변수가 Student 객체를 참조한다.");
Student s2 = new Student();
System.out.println("s2 변수가 또다른 Student 객체를 참조한다.");
}
}
Student의 클래스는 하나지만, new 연산자를 사용한 만큼 객체가 메모리에 생성된다.
s1과 s2가 참조하는 Student객체는 완전히 독립된 서로 다른 객체 이다.
Student와 StudentEx클래스의 용도
- 라이브러리(API: Application Program Interface) 클래스
- 객체 생성 및 메소드 제공 역할 - Student.java
- 실행 클래스
- main() 메소드 제공 역할 - StudentEx.java
클래스의 구성 멤버
클래스에는 객체가 가져야할 구성 멤버가 선언된다. 구성 멤버에는 필드(Field), 생성자(Constructor), 메소드(Method)가 있다.
필드: 객체의 고유 데이터, 부품 객체, 상태 정보를 저장하는 곳
생성자: new연산자로 호출되는 중괄호 {} 블록
- 객체 생성시 초기화를 담당
- 클래스 이름으로 되어 있고 리턴 타입이 없다.
메소드: 객체의 동작에 해당하는 중괄호 {} 블록
- 중괄호 블록은 이름을 갖고 있는데, 이것이 메소드 이름이다.
- 객체간의 데이터를 전달하는 수단이다.
- 외부(호출한 곳)로부터 매개값을 받아 실행에 이용하고, 실행 후 결과 값을 외부(호출한 곳)로 리턴할 수도 있다.
※용어 정리
-
클래스: 객체를 만들기 위한 설계도
-
객체: 클래스로부터 생성되며 new클래스() 로 생성
-
new 연산자; 객체 생성 연산자, 생성자를 호출하고 객체 생성 번지를 리턴한다.
-
클래스 변수: 클래스로 선언한 변수를 말하며, 해당 클래스의 객체 번지가 저장된다.
-
인스턴스: 객체는 클래스의 인스턴스 이다.
-
클래스 멤버: 클래스에 선언되는 멤버는 필드, 생성자, 메소드가 있다.
본 내용은 #혼자공부하는자바 책을 참고해 공부하려 작성했습니다.
'Work & Study > JAVA (& 혼공자Java)' 카테고리의 다른 글
자바(Java) - 생성자 (Constructor)1 (0) | 2020.09.28 |
---|---|
자바(Java) - 필드 (Field) (0) | 2020.09.28 |
자바(Java) - 객체 지향 프로그래밍1 (0) | 2020.09.23 |
자바(Java) - 열거 타입 (0) | 2020.09.23 |
자바(Java) - 배열3 (0) | 2020.09.22 |