클래스 => (설계도) : 원본 폴더
객체 => 제품 : 복사본 폴더
변수 => ?? => 텍스트파일(읽/쓰)
메소드 => ?? => 실행파일(실행만 가능)
변수에는 객체 저장X(너무 크기 때문), 오직 리모콘만 저장가능
JVM
-> 코드영역(클래스가 산다) -> 클래스 -> 자동차
-> 힙(객체가 산다)
class 자동차 {}
-> /JVM/코드영역/클래스/자동차
new 자동차(); : 자동차라는 원본폴더를 복사해서 복제본을 만든다
-> /JVM/코드영역/클래스/자동차를 복사해서
-> /JVM/힙/자동차@1 만든다
new 자동차(); : 자동차라는 원본폴더를 복사해서 복제본을 만든다
-> /JVM/코드영역/클래스/자동차를 복사해서
-> /JVM/힙/자동차@2 만든다
자바세상에서는 폴더안의 구성요소를 추가/삭제 불가능하다.
클래스에 미리 정의를 해놓아야 한다.(사전에 미리)
특정 클래스를 통해 폴더를 만들때,
/JVM/코드영역/클래스/자동차/최고속력 에다가 만들면
이미 파일이 들어 있다. 힙안에 쓸순(use) 있어서 추가/삭제 불가능하다.
자동으로 /JVM/힙/자동차@1/최고속력이 생긴다.
클래스로 할 수 있는 일
class 자동차 {}
Class Main{
public static void main(String[] args) { <- 함수
// 지역변수 스택의 맨 밑에 있다.
// 2가지, 객체, 객체내부 객체리모콘(객체는 이 객체리모콘을 this라고 부른다)
// new 자동차() 가 반환하는 것은 그 객체의 리모콘을 반환
자동차 a자동차1 = new 자동차();
자동차 a자동차2; // null
}
}
-> 자동차 객체를 조종 할 수 있는 리모콘이 객체 외부와 내부에 하나씩 존재한다.
자동차 a자동차1 = new 자동차();
자동차 a자동차2 = a자동차1; // 1번 자동차를 조종할 수 있는 리모콘
자동차 a자동차1 = new 자동차(); // 1번
자동차 a자동차2 = a자동차1; // 2번
a자동차2 = a자동차1;
// 1번 객체를 바라보는 외부 리모콘의 개수?
// 2번 객체를 바라보는 외부 리모콘의 개수?
// 3
class Main {
public static void main(String[] args) {
자동차 a자동차1 = new 자동차();
자동차 a자동차2 = new 자동차();
a자동차1(폴더).최고속력(텍스트파일) = 100;
a자동차2.최고속력 = 200;
}
}
class 자동차 {
int 최고속력;
}
// 4
class 자동차 {
// 명사(.txt) -> 편집, 값을 쓰거나 읽기 가능
String 차종;
int 연식;
int 최고속력;
// 동사(.exe) -> 오로지 파일을 실행하거나 말거나(저장, 수정 불가)
// 메소드
void 감속하다(){}
void 가속하다(){}
}