ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] Class, Instance, Constructor
    Programming Lang/Java 2022. 9. 7. 02:44

    클래스란?

    object (객체)
    a thing that can be seen, held, or touched, usually not a living thing
    보통 생물이 아닌, 보이고, 잡히고, 만질 수 있는 것
    class (클래스)
    a group of related plants or animals, in the general classification of plants and animals
    동식물의 일반적인 분류에서 관련 식물 또는 동물의 그룹
    instance (인스턴스)
    a particular situation, event, or fact, especially an example of something that happens generally
    특정한 상황, 사건 또는 사실, 특히 일반적으로 일어나는 일의 예
    constructor (생성자)
    someone who builds something or puts it together from different parts
    다른 부분에서 무언가를 만들거나 조립하는 사람

     

     

    객체지향 프로그래밍의 장점

    1. 재사용성이 높다
    2. 유지보수 용이
    3. 중복 제거

     

    클래스와 객체는 다르다.

    클래스로부터 객체를 만드는 과정
    인스턴스화
    1. new 연산자 선언 (heap 메모리 사용)
    2. 생성자를 호출
    3. 인스턴스를 생성
    클래스로부터 만들어진 객체
    인스턴스
    1. 클래스 변수 (=static 변수)
    2. 클래스 객체

     ex) 책상은 객체이고 Desk Class 는 instance 다.

     

     

    생성자

    생성자의 조건

    • 생성자는 클래스 이름과 같아야한다.
    • 리턴 값이 없다.

     

    생성자의 종류

    • 기본 생성자
    • 1개 이상의 파라미터를 가진 생성자

     

    생성자의 목적

    • 자바 클래스의 객체(도는 인스턴스)를 생성하기 위해서 존재

     

    자바 생성자의 특징

    • 생성자에 리턴 타입이 없는 이유는 생성자의 리턴 타입이 클래스의 객체이기 때문
    • 생성자가 하나도 존재하지 않을 시에는 기본 생성자가 자동으로 주입된다.
    • 생성자는 여러 개의 파라미터를 가질 수도 있는데 이미 하나라도 생성자가 존재하고 있을 시에는 기본 생성자가 자동 주입되지 않는다.
    • 1개 이상의 파라미터를 가진 생성자는 초기화의 역할을 한다.

     

    여기서 용어 주의 !!

    parameter : 매개변수.

    argument : 인수. 실데이터. 값 그 자체.

     

     

     

    Q.  참조형은 주소를 저장하는 타입이고, 클래스가 기본형이 아니면 클래스를 만든다는 것은 곧 주소가 생성된다는 의미일까?

    A.  그렇다.

     

    new 연산자를 사용하여 클래스를 만들 때, 생성자가 호출되면서 인스턴스화가 진행된다. 인스턴스화가 되었다는 것은 실체가 생겼다는 뜻이다. 즉, 주소를 저장할 공간이 생겼다는 의미이다.

    기본형 변수

    • 값을 저장

     

    참조형 변수

    • 주소를 저장

     

    Q.  생성자가 없다면 객체를 얻을 수 없을까?

    A.  그렇지 않다. static 이 여기서 나온다.  → 참고링크

     

     

    더보기

    참고자료 : 자바의 정석, 자바의 신

    (+ 개인 생각)

    'Programming Lang > Java' 카테고리의 다른 글

    [Java] Package, Modifier  (0) 2022.09.10
    [Java] Inheritance, Overriding  (0) 2022.09.09
    [Java] Variable, Method, JVM  (0) 2022.09.05
    [Java] String Array  (0) 2022.08.28
    [Java] Operator  (0) 2022.08.27
Designed by Tistory.