Java의 Class와 Object, 생성자

Dohyeon Kong·2024년 4월 4일
0

Java☕

목록 보기
4/12
post-thumbnail

Java는 객체 지향 언어이며 객체 지향 언어는 당연하게도 객체들의 특성(State)행동(behavior)로 구성되어 있다.

자바의 객체 지향 특성

  • 캡슐화(encapsulation)
  • 상속(inheritacne)
  • 다형성(polymorphism)

캡슐화(encapsulation)

객체를 캡슐로 싸서 그 내부를 보호하고 볼 수 없게 하는 특성

  • 일상생활에서 예시를 들어보면 캡슐 안에 들어있는 약이 어떤 색인지, 어떤 성분인지 보이지 않으며 캡슐로부터 보호를 받기 때문에 외부의 접근으로부터 안전하게 보호된다.
  • TV 또한 케이스가 없다면 외부의 접촉으로부터 보호받지 못하며 사람도 피부나 근육이 없으면 혈관, 장기, 뇌, 등 노출이 되어 보호받지 못할 것이다.
  • 자바는 필드와 메소드를 클래스 내 모두 구현하였고, 캡슐화를 통해 객체 내 필드에 대한 외부로부터의 접근을 제한한다.
  • 자바에서 객체의 모양을 선언한 틀인 클래스와 클래스 모양 그대로 생성된 실체인 객체를 통해 구현하였다.

Java의 Class와 Object

객체를 만들어 내기 위한 설계 혹은 틀클래스를 의미하며, 클래스에 선언된 모양 그대로 생성된 실체객체

  • 객체를 클래스의 인스턴스(instance)라고 부른다
  • 일상생활로 예시를 들자면 붕어빵 틀이 클래스이며 이 틀의 형태로 구워진 붕어빵이 객체를 의미한다.
  • 붕어빵은 틀의 모양대로 만들어지지만 앙코붕어빵, 크림붕어빵 등 서로 다른 것처럼 각 객체들은 자신만의 고유한 값을 가지고 있지만 모두 붕어빵이다.

Java 클래스 구성

class 키워드를 통해 클래스를 선언한다. 클래스의 구성 요소를 멤버라고 부르며, 멤버필드메소드로 구성되어 있다.

클래스 구성

  • 클래스는 class 키워드와 클래스 명으로 선언하고 중괄호( {} ) 안에 클래스의 필드와 메소드를 모두 작성해야 한다.
  • 클래스 외부에 필드나 메소드를 결코 둘 수 없다.

클래스 멤버

  • 클래스의 멤버는 필드(field)와 메소드(method)로 구성되어 있다.
  • 필드(field)는 객체의 상태 값을 저장하는 멤버 변수
  • 메소드(method)는 실행 가능한 함수이면서 객체의 행위를 구현한 것이다.

객체 생성과 활용

클래스를 선언하였으면 클래스를 활용하여 객체를 생성할 수 있다.
객체를 생성하는 과정은 크게 래퍼런스 변수 선언과 객체 생성 두 과정으로 나뉜다.

객체가 생성되고 활용되는 과정

  1. 래퍼런스 변수를 선언한다
  2. new 연산자로 객체를 생성한다.
  3. 객체 멤버로 접근할 수 있다.

1. 래퍼런스 변수 선언

객체를 생성하기 전 객체를 가리킬 래퍼런스 변수를 선언한다.

//래퍼런스 변수 선언
Car car;
  • 해당 선언문에서는 Car 객체가 생성되지 않았다.
  • 단지 Car 타입의 객체를 가리키는 래퍼런스 변수일 뿐 객체는 아니다.
  • 래퍼런스 변수 = 객체 이름을 의미한다.

2. new 연산자로 객체 생성

new 연산자를 사용하여 객체를 생성한다.

//new 연산자로 객체 생성
car = new Car();
  • new 연산자는 해당 객체 타입의 크기만한 메모리를 할당받아 메모리에 대한 래퍼런스(주소)를 리턴(반환)한다.
  • 래퍼런스 값(주소값)을 변수 car에 대입된다.

3. 객체 멤버 접근

객체의 멤버에 접근할 때 다음과 같이 점(.)연산자를 이용한다.

// 객체 멤버 접근
car.weight = 100; // car 객체의 weight값을 100으로 설정한다.
car.name= "소나타"; // car 객체의 name을 소나타로 대입한다.
int move = car.getMove(); // car 객체의 getMove() 메소드를 호출한다.


생성자

객체가 생성될 때 초기화를 위해 실행되는 메소드

생성자의 특징

  • 생성자의 이름을 클래스명과 같게 해야 한다.
  • 생성자를 여러 개 작성할 수 있다.
// 생성자를 여러개 작성할 수 있음
public class Cirlce{
	public Circle() {..}
    public Circle(int r, String n){
    
    }
}
  • 생성자는 객체를 생성할 때 하나만 그리고 한번만 호출한다.
Circle pizza = new Circle(10, "피자");
Circle donut = new Circle();
  • 생성자의 리턴 타입을 적으면 안된다.
public class Cirlce(){ }

생성자의 목적

객체가 생성될 때 객체의 필드에 초기값을 설정하거나 필요에 따라 메모리를 확보하거나, 파일을 여는 등 객체가 활동하기 전 필요한 초기화를 하기 위해서 사용한다.

Circle pizza = new Circle(10, "피자");

기본 생성자(default 생성자)

매개 변수가 없고 실행 코드 또한 없어 아무일도 하지 않고 단순히 리턴하는 생성자

  • 자바는 클래스에 생성자가 하나도 선언되어 있지 않은 경우, 컴파일러가 기본 생성자를 자동으로 생성해준다.
  • 생성자가 하나라도 존재하면 컴파일러는 기본 생성자를 임의로 삽입해 주지 않는다.

참조📜

  • 명품 JAVA ESSENTIAL - 황기태 지음-
profile
천천히, 꾸준히, 그리고 끝까지

0개의 댓글