![[자바 #15] 객체와 클래스](https://image.inblog.dev?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog-custom%3Ftitle%3D%255B%25EC%259E%2590%25EB%25B0%2594%2B%252315%255D%2B%25EA%25B0%259D%25EC%25B2%25B4%25EC%2599%2580%2B%25ED%2581%25B4%25EB%259E%2598%25EC%258A%25A4%26tag%3DTemplate%2B1%26description%3D%26template%3D3%26backgroundImage%3Dhttps%253A%252F%252Fsource.inblog.dev%252Fog_image%252Fdefault.png%26bgStartColor%3D%25233f0707%26bgEndColor%3D%25233f0707%26textColor%3D%2523000000%26tagColor%3D%2523000000%26descriptionColor%3D%2523000000%26logoUrl%3D%26blogTitle%3DGyeongwon%2527s%2Bblog&w=2048&q=75)
객체를 생성할 때에 설계도가 필요하다. 객체지향 프로그래밍에서 객체를 생성하려면 설계도에 해당하는 클래스가 필요하다. 클래스로부터 생성된 객체를 해당 클래스의 인스턴스라고 부른다.
1. 클래스 선언
클래스 선언은 어떻게 객체를 생성(생성자)하고, 객체가 가져야 할 데이터(필드)가 무엇이고, 객체의 동작(메소드)은 무엇인지를 정의하는 내용이 포함된다.
[클래스명.java]
// 클래스 선언
public class 클래스명 {
}
하나의 소스 파일에 복수 개의 클래스를 선언할 수 있는데, 이때 주의할 점은 소스 파일명과 동일한 클래스만 공개 클래스( public class)로 선언할 수 있다.
공개 클래스란 ?
공개 클래스(public class)는 어느 위치에 있든지 패키지와 상관없이 사용할 수 있는 클래스를 말한다. public은 접근 제한자 중 하나이다.
2. 객체 생성과 클래스 변수
클래스로부터 객체를 생성하려면 객체 생성 연산자인 new가 필요하다.
클래스 변수 = new 클래스();
public class Student {
}
public class StudentExample {
public static void main(String[] args) {
Student s1 = new Student();
System.out.println("s1 변수가 Student 객체를 참조합니다.");
Student s2 = new Student();
System.out.println("s2 변수가 Student 객체를 참조합니다.");
}
}
클래스 두 가지 용도
라이브러리 클래스 : 실행할 수 없으며 다른 클래스에서 이용하는 클래스
실행 클래스: main() 메소드를 가지고 있는 실행 가능한 클래스
3. 클래스의 구성 멤버
- 생성자 : new 연산자로 객체를 생성할 때 객체의 초기화 역할을 담당한다. 선언 형태는 메소드와 비슷하지만, 리턴 타입이 없고 이름은 클래스 이름과 동일하다.
- 필드 : 객체의 데이터를 저장하는 역할을 한다. 선언 형태는 변수 선언과 비슷하지만 쓰임새는 다르다.
- 메소드 : 객체가 수행할 동작이다. 다른 프로그램 언어에서는 함수라고 하기도 하는데, 객체 내부의 함수는 메소드라고 부른다. 메소드는 객체와 객체간의 상호작용을 위해 호출된다.
4. 필드 선언과 사용
객체의 데이터에는 고유 데이터, 현재 상태 데이터, 부품 데이터가 있다.
public class Car {
// 고유 데이터를 저장하는 필드 선언
String company;
String model;
String color;
int maxSpeed;
// 상태 데이터를 저장하는 필드 선언
int speed;
int rpm;
// 부픔 데이터를 저장하는 필드 선언
Body body;
Engine engine;
Tire tire;
}
필드 선언
필드를 선언하는 방법은 변수를 선언하는 방법과 동일하다 단, 반드시 클래스 블록에서 선언되어야만 필드 선언이 된다.
- 타입 필드면 [ = 초기값] ;
필드와 (로컬)변수의 차이점
필드 : 클래스 선언 블록에서 선언하고 객체 내부에 존재하며 객체 내.외부 어디든 사용 가능하다.
(로컬)변수 : 생성자, 메소드 선언 블록에서 선언하고 생성자, 메소드 호출 시에만 존재하며 생성자, 메소드 블록 내부에서만 사용 가능하다.
public class Car {
String model = "그랜저";
int speed = 300;
boolean start = true;
Tire tire = new Tire();
}
필드 사용
필드를 사용한다는 것은 필드값을 읽고 변경하는 것을 말한다. 클래스에서 필드를 선언했다고 해서 바로 사용할 수 있는 것은 아니다. 필드는 객체의 데이터이므로 객체가 존재하지 않으면 필드도 존재하지 않는다.
클래스로부터 객체가 생성된 후에 필드를 사용할 수 있다. 필드는 객체 내부의 생성자와 메소드 내부에서 사용할 수 있고, 객체 외부에서도 접근해서 사용할 수 있다.
객체 내부에서는 단순히 필드명으로 읽고 변경할 수 있지만, 외부 객체에서는 참조 변수와 도트(.) 연산자를 이용해서 필드를 읽고 변경해야 한다. 도트(.)는 객체 접근 연산자로, 객체가 가지고 있는 필드나 메소드에 접근하고자 할 때 참조 변수 뒤에 붙인다.
Share article