클래스와 객체

지윤·2021년 1월 19일
0

Java

목록 보기
7/21

객체지향 언어

프로그래밍 언어 + 객체지향 개념(규칙)

장점: 재사용성, 유지보수, 중복 코드 제거

객체지향 언어의 특징

  1. 캡슐화
  2. 상속
  3. 추상화
  4. 다형성

클래스란?

객체를 정의해 놓은 것이다. 클래스는 객체를 생성하는데 사용된다. 클래스는 설계도(TV설계도), 객체는 제품(TV)으로 볼 수 있다.

객체의 구성요소

속성(변수) + 기능(메서드)

객체 VS 인스턴스

객체는 모든 인스턴스를 대표하는 일반적 용어이며, 인스턴스는 특정 클래스로부터 생성된 객체이다. 같은 용어로 봐도 된다.

클래스로부터 객체를 만드는 것을 인스턴스화라고 한다.

인스턴스

객체 지향 프로그래밍(OOP)에서 인스턴스(instance)는 해당 클래스의 구조로 컴퓨터 저장공간에서 할당된 실체를 의미한다.

클래스 파일 작성 시

하나의 소스 파일 내에 여러개의 클래스를 만들 수 있는데 하나의 클래스만 작성하는 것이 좋다.
1. 하나의 소스 파일에는 public class가 둘 이상 존재할 수 없다.
2. 소스파일 이름은 public class 명과 일치해야 한다.
3. 클래스 명은 대소문자를 구분한다.

객체의 생성

Tv t = new Tv();
클래스명 참조변수명 = new 클래스명();


객체의 사용

참조변수를 사용해서 객체의 변수와 메서드를 사용하는 것
t.channel = 7;
t.channelDown();

  • 참조변수를 지우면 JAVA 가비지 컬렉터(GC)가 주기적으로 사용 불가한 객체들을 삭제함으로써 불필요한 메모리 사용을 줄여준다.
  • 여러개의 참조변수로 하나의 객체를 사용할 수 있다.

객체 배열

객체 배열 == 참조변수 배열

Tv tv1, tv2, tv3;
Tv[] tvArr = new Tv[3];

//객체 배열을 초기화 시켜주지 않으면 에러 발생
tvArr[0] = new Tv(); //Tv tvArr = {new Tv(), new Tv(), new Tv()};
tvArr[1] = new Tv();
tvArr[2] = new Tv();

클래스 정의

  1. 설계도
  2. 데이터 + 함수
  3. 사용자 정의 타입

클래스는 함수+구조체(타입 종류와 상관없이 서로 관계있는 여러 데이터를 하나로 저장할 수 있는 공간)

참조변수

연산자 new가 인스턴스가 있는 메모리를 생성한 경우, 그 메모리의 주소와 어떻게 연결할 수 있을까?


C++ 언어에서는 new를 이용해서 메모리를 생성하면 주소 그 자체를 직접 넘겨줍니다.
주소를 저장하기 위한 포인터 변수를 이용해서 주소를 관리하기 때문에 C++에서는 사용자가 주소를 직접 처리합니다.
하지만 자바에서는 메모리 주소를 바로 주지 않는데, 즉 인스턴의 메모리 주소 대신 참조값을 할당받게 됩니다.

참조값(Reference Value)

참조값이란?

객체의 메모리를 생성했을 때 메모리와 연결된 유일한 숫자값 입니다.
이 숫자값을 참조변수가 받으며, 참조값을 갖고 해당 객체를 처리합니다.
참조값으로 작업하면 내부에서 참조값에 연결된 메모리로 작업하는 것과 같은 효과 입니다.

인스턴스를 만들면 자바 실행 시스템에서 인스턴스의 실제 주소에 연결된 숫자(참조값) 하나를 줍니다.
이 숫자(참조값)를 인스턴스가 받게 되며, 인스턴스는 이 숫자(참조값)를 이용해서 해당 인스턴스의 메모리에 값을 할당하거나 메소드를 호출할 수 있습니다.

참조값은 4바이트짜리 정수값입니다.
그렇기 때문에 인스턴스 메모리를 할당할 때는 4바이트의 정수값을 객체변수에 할당하게 됩니다.



참고

자바의 정석
위키백과
https://dohe2014.tistory.com/entry/참조reference와-참조변수reference-variable

profile
헬로🙋‍♀️

0개의 댓글

관련 채용 정보