클래스 [ Class ]
- 자바에서 Class는 설계도
- 객체를 정의해 놓은 것, 객체를 생성하는데 사용
- 객체를 생성하기 위한 속성(필드, 멤버 변수)과 메소드가 정의
* * 클래스 선언은 한 파일에서 여러 개가 가능하나 파일명과 같은 클래스에만 public 접근 제한자를 붙일 수 있다
객체 [ Object ]
- 정의로는 실세계에 존재하는 모든 것
- 설계도인 클래스에 따라 객체는 메모리 영역에 생성된다.
- 속성(멤버 변수)과 기능(메서드)을 가지는 프로그램 단위
객체는 변수, 데이터 구조, 메서드 등 도 될 수 있는 메모리 값이다..
객체란 뜻이 참 아리송하게 느껴진다.
클래스와 객체의 유명한 예시로 클래스는 붕어빵 틀, 객체는 붕어빵이 있다.
// class : 객체를 생성하는 설계도 / 기준
class SmartPhone {
// 멤버 변수, 속성
String nation;
String os;
String owner;
String telNumber;
// 메서드, 함수
void tel(String toTelNumber) {
System.out.println(toTelNumber+"에 전화중입니다.");
}
}
SmartPhone이란 클래스에서 속성과 메서드를 위 처럼 작성할 시 다른 클래스에서 SmartPhone의 객체를 생성해주면 SmartPhone의 속성과 메서드를 사용할 수 있다.
인스턴스 [ Instance ]
- 클래스로부터 만들어진 객체를 인스턴스라고 한다.
- 클래스로부터 객체를 만드는 과정을 인스턴스화라고 한다.
- 메모리 상에 구현된 실체라고도 한다.
클래스 변수;
변수 = new 클래스(); // 객체 생성, new연산자가 반환한 객체의 주소를 변수에 할당한다.
클래스 변수2 = new 클래스(); // 하나의 클래스에서 여러 개의 인스턴스 생성 가능
public class UseSmartPhone {
public static void main(String[] args) {
// 인스턴스 선언 및 생성
SmartPhone myPhone; // 인스턴스 선언, myPhone은 참조변수, 생성하는 걸 인스턴스화라고 한다.
myPhone = new SmartPhone(); // 인스턴스 생성, new연산자는 무언가를 생성한다는 의미, 스마트폰을 샀을 때 딱 공기계의 상태
SmartPhone yourPhone = new SmartPhone(); // 선언과 동시에 생성
// 인스턴스의 속성(멤버 변수)에 접근, 스마트폰을 사서 개통까지 한 상태
myPhone.nation = "Korea";
myPhone.os = "Android";
myPhone.owner = "무야호";
myPhone.telNumber = "010-1111-2222";
// SmartPhone 클래스의 속성들을 myPhone 객체(인스턴스)에서 새로운 값으로 사용
System.out.println(myPhone.nation);
System.out.println(myPhone.os);
System.out.println(myPhone.owner);
System.out.println(myPhone.telNumber);
// 인스턴스의 기능을 사용(메서드를 호출)
myPhone.tel("010-2222-2222");
// "010-2222-2222에 전화중입니다."
★★★
SmartPhone hisPhone = new SmartPhone();
hisPhone.nation = "USA";
System.out.println(hisPhone.nation);
System.out.println("=====================");
System.out.println("yourPhone " + yourPhone);
System.out.println("hisPhone " + hisPhone);
hisPhone = yourPhone; // hisPhone이 바라보던 메모리 주소가 yourPhone의 메모리 주소를 바라본다.
// hisPhone이 yourPhone을 바라본다고 기존의 hisPhone의 메모리가 사라지는 건 아니다.
System.out.println("yourPhone " + yourPhone);
System.out.println("hisPhone " + hisPhone);
System.out.println("=====================");
yourPhone.nation = "UK";
System.out.println(hisPhone.nation);
★★★
}
}
★★★ 부분에서 hisPhone.nation을 처음엔 USA로 저장해놨으나 hisPhone = yourPhone으로 hisPhone의 주소값을 yourPhone의 주소값으로 변경하고 yourPhone.nation에 UK를 저장하면 hisPhone.nation도 yourPhone.nation과 같은 값이 나오는 걸 볼 수있다.
'Java' 카테고리의 다른 글
리터럴(literal) / 기본 타입(primitive type) / 참조 타입(reference type) / 메모리 영역 (0) | 2023.01.03 |
---|---|
equals()와 == (0) | 2023.01.03 |
break, return, continue + for each문 (1) | 2022.12.31 |
논리 연산자 and, or, not (0) | 2022.12.30 |
JVM / JRE / JDK / Java SE (0) | 2022.12.29 |
댓글