객체를 생성할 때에는 설계도가 필요합니다. 현실 세계에서 자동차를 생성하려면 자동차의 설계도가 필요하듯이, 객체 지향 프로그래밍에서도 객체를 생성하려면 설계도에 해당하는 클래스가 필요합니다.
클래스로부터 생성된 객체를 해당 클래스의 '인스턴스'라고 부릅니다.
클래스로부터 객체를 만드는 과정을 '인스턴스화' 라고 합니다.
동일한 클래스로부터 여러 개의 인스턴스를 만들 수 있는데 이것은 동일한 설계도 여러 대의 자동차를 만드는 것과 동일합니다.
클래스 선언
클래스 선언은 객체 생성을 위한 설계도를 작성하는 작업 입니다. 어떻게 객체를 생성(생성자)하고, 객체가 가져야 할 데이터(필드)가 무엇이고, 객체의 동작(메서드)은 무엇인지를 정의하는 내용이 포함됩니다.
public class ClassTest {
...
}
하나의 소스 파일은 다음과 같이 복수 개의 클래스 선언을 포함할 수 있습니다.
public class SportsCar {
...
}
class Tire {
...
}
복수 개의 클래스 선언이 포함된 소스 파일을 컴파일 하면 바이트코드 파일(.class)은 클래스 선언 수만큼 생깁니다.
하나의 소스 파일에 복수 개의 클래스를 선언할 때 주의할 점은 소스 파일명과 동일한 클래스만 공개 클래스로 선언할 수 있다는 것 입니다.
객체 생성과 클래스 변수
클래스로부터 객체를 생성하려면 객체 생성 연산자인 new 가 필요합니다.
new 연산자 뒤에는 생성자 호출 코드가 오는데, 클래스() 형태를 가집니다. new 연산자는 객체를 생성시킨 후 객체의 주소를 리턴하기 때문에 클래스 변수에 댜음과 같이 대입할 수 있습니다.
클래스의 두 가지 용도
1) 라이브러리(library) 클래스: 실행할 수 없으며 다른 클래스에서 이용하는 클래스
2) 실행 클래스: main() 메서드를 가지고 있는 실행 가능한 클래스
일반적으로 하나의 실행 클래스와 여러 개의 라이브러리 클래스들로 구성됩니다.
클래스 구성 멤버
1. 필드 : 객체의 데이터가 저장되는 곳
2. 생성자 : 객체 생성 시 초기화 역할 담당
3. 메서드 : 객체의 동작으로 호출 시 실행하는 블록
필드와 (로컬) 변수의 차이점
(로컬) 변수는 생성자와 메서드 블록에서 선언되며 생성자와 메서드 호출 시에만 생성되고 사용됩니다. 필드는 클래스 블록에서 선언되며, 객체 내부에서 존재하고 객체 내외부에서 사용 가능합니다.
구분 | 필드 | (로컬) 변수 |
선언 위치 | 클래스 선언 블록 | 생성자, 메서드 선언 블록 |
존재 위치 | 객체 내부에 존재 | 생성자, 메서드 호출 시에만 존재 |
사용 위치 | 객체 내, 외부 어디든 사용 가능 | 생성자, 메서드 블록 내부에서만 사용 |
'Java > 기초문법' 카테고리의 다른 글
[Java] 인스턴스 멤버 (0) | 2024.09.24 |
---|---|
[Java] 오버로딩(Overloading) (1) | 2024.09.24 |
[Java] ASCII 와 유니코드 (1) | 2024.09.23 |
[Java] Java를 통해 숫자 야구 게임 만들기 (0) | 2024.09.23 |
[Java] 객체지향프로그래밍 (2) | 2024.09.20 |