Java의 정석 기초편(남궁성) 정리 + a/6 ~ 7. 객체지향 프로그래밍 1, 2

객체지향 프로그래밍1 02~04 + 06 . 클래스와 객체, 객체의 생성, 인스턴스와 참조변수

doriver 2022. 7. 23. 16:48

클래스

객체를 정의해 놓은것 , 객체의 설계도 , 객체를 생성하는데 사용된다

객체

클래스에 정의된 내용대로 메모리에 생성된 것

객체는 속성(변수)과 기능(메서드)으로 이루어진다.

(속성과 기능을 객체의 member라 함)

인스턴스

객체와 같은의미 ( 객체는 모든 인스턴스를 대표하는 포괄적인 의미 )

클래스의 인스턴스화, 클래스의 인스턴스

 

 

예)

public class Content01 {
	public static void main(String[] args) {
		Tv t;
		t = new Tv();
		t.channel = 7;
		t.channelDown();
		System.out.println("현재 채널은 " + t.channel + " 입니다");
	}
}

class Tv {
	String color;
	boolean power;
	int channel;
	
	void power() { power = !power; }
	void channelUp() { ++channel; }
	void channelDown() { --channel; }
}

하나의 소스파일( *.java )에 둘 이상의 클래스를 정의하는것도 가능하다. 
소스파일 이름은 public class의 이름과 일치해야 한다
public class가 없다면 소스파일 이름은 소스파일내의 어떤 클래스의 이름으로 해도 상관없다.

클래스파일( *.class )은 클래스마다 하나씩 만들어지므로
Content01.java를 컴파일 하면 Content01.class와 Tv.class 2개의 클래스파일이 생성된다

 

객체의 생성

1.

Tv t;

Tv클래스 타입의 참조변수 t를 선언한다. 메모리에 참조변수 t를 위한 공간이 마련된다

 

t = new Tv();

 

2.

연산자 new에의해 Tv클래스의 인스턴스가 메모리의 빈 공간에 생성된다. 

(멤버변수는 각 자료형에 해당하는 기본값으로 초기화 된다.)

 

 

 

 

객체는 클래스에 정의된 인스턴스변수의 집합. 객체에는 클래스변수나 메서드가 포함되지 않는다.

(이해를 돕기위해 인스턴스 변수와 메서드를 함께 그린거)

https://dorivertt.tistory.com/336

 

JVM 메모리 공간 , 변수와 데이터 , Garbage Collector

자바(JAVA)를 사용하는 입장에서 알아야 할 메모리 구조 및 특징 JVM(자바 가상 머신)은 OS로부터 메모리를 할당받고, 그 메모리를 용도에 따라서 여러 영역으로 나누어 관리를 한다. 각 변수의 생

dorivertt.tistory.com

 

 

3.

대입연산자(=)에 의해 생성된 객체의 주소값이 참조변수 t에 저장된다

이제 참조변수 t를 통해 Tv인스턴스에 접근할수 있다.

(주소가 0x100인 곳에 생성되었다고 가정하자)

 

 

 

인스턴스와 참조변수

인스턴스는 참조변수를 통해서만 다룰수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야 한다.