https://www.youtube.com/channel/UC1IsspG2U_SYK8tZoRsyvfg
유튜브 남궁성의 정석코드 채널
'자바의 정석 - 기초편'을 보고 메모한 것임을 알려드립니다.
*클래스
정의 : 클래스란 객체를 정의해 놓은 것
용도 : 클래스는 객체를 생성하는데 사용
*객체
정의 : 실제로 존재하는 것. 사물 또는 개념
용도 : 객체가 가지고 있는 기능과 속성에 따라 다름
-클래스 = 제품 설계도(TV 설계도)
-객체 = 제품(TV)
*객체(TV) = 속성(변수) + 기능(메소드)
속성 => 크기, 길이, 높이, 색상, 볼륨, 채널 등
기능 => 켜기, 끄기, 볼륨 높이기, 볼륨 낯추기 등
*인스턴스
객체 : 모든 인스턴스를 대표하는 일반적 용어
인스턴스 : 특정 클래스로부터 생성된 객체(예 : TV인스턴스)
-클래스 -> 인스턴스화 -> 인스턴스(객체)
*클래스(설계도)가 왜 필요한가?
객체(제품)를 생성하기 위해
*객체(제품)가 왜 필요한가?
객체(제품)를 사용하기 위해
*객체(제품)를 사용한다는 것은?
객체(제품)가 가진 속성(변수)과 기능(메소드)을 사용하려고
*하나의 소스파일에 여러 클래스 작성
Hello2. java
public class Hello2 { } => public class가 있는 경우, 소스파일의 이름은 반드시 public class과 일치해야한다.
class Hello3 { }
--------------------------------
Hello2. java
class Hello2 { } => public class가 하나도 없는 경우, 소스파일의 이름은 'Hello2.java', 'Hello3.java' 둘 다 가능하다.
class Hello3 { }
-하나의 소스파일에는 하나의 클래스만 작성하는 것이 바람직
-하나의 소스파일에는 하나의 public class만 허용
*객체의 생성
클래스 변수명; // 클래스의 객체를 참조하기 위한 참조변수 선언
변수명 = new 클래스명(); // 클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장
Tv t; //Tv클래스 타입의 참조변수 t를 선언
t = new Tv(); // Tv인스턴스를 생성한 후, 생성된 Tv인스턴스의 주소를 t에 저장
*객체의 사용
t.channel = 7; // Tv인스턴스의 멤버변수 channel의 값을 7로 한다.
t.channelDown(); // Tv인스턴스의 메소드 channelDown()을 호출한다.
System.out.println("현재 채널은 " + t.channel + " 입니다. ");
*객체의 생성과 사용
t 0x100 => Tv리모콘
0x100 => 객체주소
---------------------------
color : null
power : false => 모두 Tv 객체
channel : 0
---------------------------
power()
channelUp()
channelDown()
----------------------------
Tv t1 = new Tv();
Tv t2 = new Tv(); => 객체를 만들때 마다 Tv 클래스의 정의된 변수들이 만들어진다,
t1.channel = 7; t1 = 0x100, t2 = 0x200 서로 다른 참조변수
변수 = 하나의 값만 저장 가능
t1은 0x100의 주소를 가지고
t2은 0x200의 주소를 가진다고 가정했을때,
t2 = t1; 이라고 선언한다면 t2의 주소는 0x100으로 바뀐다.
따라서, 0x200의 주소를 가진 6개의 멤버(3개의 변수와 3개의 메소드)는 가비지 컬렉션에 의해서 정리된다.
*객체 배열
객체 배열 == 참조변수 배열
Tv tv1, tv2, tv3; => Tv[] tvArr = new Tv[3];
Tv t1 = new Tv();
Tv t2 = new Tv();
Tv t3 = new Tv();
위와 같은 참조변수 3개(t1, t2, t3)를 배열로 만들면
다음과 같다.
Tv[] tvArr = new Tv[3]; //길이가 3인 Tv타입의 참조변수 배열
tvArr[0] = new Tv(); //객체를 생성해서 배열의 각 요소에 저장
tvArr[1] = new Tv();
tvArr[2] = new Tv();
따라서, 객체 배열은 참조변수 배열이라고 한다.
자료 출처 : 자바의 정석 요약집
(https://github.com/castello/javajungsuk_basic/blob/master/javajungsuk_basic_%EC%9A%94%EC%95%BD%EC%A7%91.pdf)