목차
1. 클래스와 객체
2. 객체와 인스턴스
3. 객체의 구성요소 - 속성과 기능
4. 인스턴스의 생성과 사용
5. 객체배열
1. 클래스와 객체
클래스는 객체를 정의해 놓은 것으로, 객체를 생성하는 데 사용된다.
객체는 클래스에 정의된 대로 메모리에 생성된 것을 의미한다.
클래스는 제품의 설계도
객체는 제품
2. 객체와 인스턴스
클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 한다. 어떤 클래스의 객체를 그 클래스의 인스턴스라고 한다.
인스턴스와 객체는 같은 의미이지만, 객체는 모든 인스턴스의 대명사이고, 인스턴스는 특정 클래스의 객체를 의미한다는 점에서 약간의 차이가 있다.
3. 객체의 구성요소 - 속성과 기능
객체는 속성과 기능이라는 두 요소로 구성되어 있다. 클래스에는 객체의 모든 기능과 속성이 정의되어 있다. 이로부터 객체를 생성하면, 클래스에 정의된 기능과 속성을 가진 객체가 만들어진다. 속성과 기능은 다양한 이름으로 불리는데, 그 이름들은 아래와 같다.
속성 | 멤버변수 | 특성 | 필드 | 상태 |
기능 | 메서드 | 함수 | 행위 |
코드 예제
public class Member {
// 멤버 변수 = 특성 = 필드 = 상태
long id;
String name;
// 메서드 = 함수 = 행위
void idUp() {
++id;
}
void idDown() {
--id;
}
}
4. 인스턴스의 생성과 사용
인스턴스는 클래스 객체이름 = new 클래스();로 생성한다.
연산자 new에 의해 클래스의 인스턴스가 메모리의 빈 공간에 생성되게 된다.
그 다음에 대입 연산자(=)에 의해 생성된 객체의 주소값이 참조변수 (객체이름)에 저장된다.
객체의 주소를 참조하면 객체의 멤버변수와, 메서드가 메모리에 저장되어있게 된다.
코드예제
public class UseInstance {
public static void main(String[] args) {
// 객체 생성
Member member = new Member();
System.out.println("member.id = " + member.id);
// member.id = 0
// 객체 id 올리는 메서드 사용
member.idUp();
System.out.println("member.id = " + member.id);
// member.id = 1
}
}
* 참고
각각의 객체마다 멤버변수는 각자의 메모리 주소에 독립적으로 가지고 있는 것이다.
코드예제
public class UseInstance {
public static void main(String[] args) {
// 객체 생성
Member member = new Member();
System.out.println("member.id = " + member.id);
// member.id = 0
// 객체 id 올리는 메서드 사용
member.idUp();
System.out.println("member.id = " + member.id);
// member.id = 1
// 객체2 생성
Member member2 = new Member();
System.out.println("member2.id = " + member2.id);
// member2.id = 0
// member와는 독립적인 것이므로 1 이 아니다.
}
}
member의 주소 0x100 <--------------------- member
member2의 주소 0x200 <---------------------- member2
만약 member = member2 코드를 작성한다면 둘다 참조변수이므로 member의 주소를 가리키던 member는 member2의 주소를 가리키게 된다. 이제 기존에 0x100을 가리키는 것은 아무것도 없게 되고 그 주소의 member 객체는 사용할 수 없게 된다.
5. 객체 배열
객체도 배열로 다루는 것이 가능하고 이를 객체 배열이라고 한다.
코드예제
public class InstanceArrayEx {
public static void main(String[] args) {
// 참조 변수 배열을 생성하기
Member[] memberArray = new Member[3];
// 각 요소에 객체 생성후 주소를 저장
memberArray[0] = new Member();
memberArray[1] = new Member();
memberArray[2] = new Member();
// memberArray의 각각 member의 id를 0, 1, 2로 만들기
memberArray[1].idUp();
memberArray[2].idUp();
memberArray[2].idUp();
//출력해보기
System.out.println("memberArray[0].id = " + memberArray[0].id);
System.out.println("memberArray[1].id = " + memberArray[1].id);
System.out.println("memberArray[2].id = " + memberArray[2].id);
//memberArray[0].id = 0
//memberArray[1].id = 1
//memberArray[2].id = 2
}
}
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 오버로딩이란? (0) | 2022.06.22 |
---|---|
[Java] 변수와 메서드 (0) | 2022.06.22 |
[Java] 배열(Array) (0) | 2022.06.21 |
[Java] 자바 연산자(Java Operator) (0) | 2022.06.20 |
[Java] 비트와 바이트 / 2의 보수법 (0) | 2022.06.19 |