[자바 스터디] 5주차 과제: 클래스

yunu·2022년 4월 13일
0
post-thumbnail

5주차 과제: 클래스

목표

자바의 Class에 대해 학습하세요.

학습할 것

  • 클래스 정의하는 방법
  • 객체 만드는 방법 (new 키워드 이해하기)
  • 메소드 정의하는 방법
  • 생성자 정의하는 방법
  • this 키워드 이해하기
  • 이진트리 구현하기

클래스 정의하는 방법

클래스

  • 추상화를 위한 도구, 타입과 동일한 것 X, 실제로 자바스크립트와 같은 프로토타입 기반의 언어에는 클래스가 존재 X
  • 동적으로 변하는 객체의 상태가 아니라 객체가 속한 타입의 정적인 모습을 표현하기 위한 정적(타입) 모델을 구현하기 위해 제공되는 구현 메커니즘
  • 객체의 청사진, 객제가 아는 것(상태)과 객체가 하는 것(행동)을 기술

접근제어자 범위

(접근제어자) (abstract, final, strictfp) class 클래스명 extends 부모클래스명 implements 인터페이스명1, 인터페이스명2 {
	
    // 필드
    // 접근제어자 없으면 default
    (접근제어자) (타입) 인스턴스변수; // 인스턴스(멤버) 변수 = 상태, 기본값으로 초기화(1)
    (접근제어자) (타입) 인스턴스변수 =; // 명시적 초기화(2)
    
    // 클래스 변수는 heap영역인 아닌 static영역에 메모리가 할당되어 GC의 관리를 받지 않음
    // public 키워드를 붙이면 전역변수
    static (접근제어자) (타입) 클래스변수; // 클래스 변수, 기본값으로 초기화(1)
    static (접근제어자) (타입) 클래스변수 =; // 명시적 초기화(2)

	// 인스턴스 변수 초기화 블록(3)
    {
    	인스턴스변수 = 초기화;
    }
    
    // 클래스 변수 초기화 블록(3)
	static {
    	클래스변수 = 초기화;
    }
    
    // 생성자(4)
    (접근제어자) 클래스명(매개변수...) { ... }
    
    // 인스턴스 메서드 = 행동
    (접근제어자) (반환타입) 메서드명(매개변수...) { ... }
    
    // 클래스 메서드
	static (접근제어자) (반환타입) 메서드명(매개변수...) { ... }
}

객체 만드는 방법 (new 키워드 이해하기)

객체

  • 특정 시점의 구체적인 상태 = 스냅샷(snapshot) = 동적 모델
  • 인스턴스 = 메모리에 할당된 객체

new 키워드

  • new 연산자를 통해 heap 영역에 데이터를 저장할 공간을 할당받고 그 메모리 공간의 참조값(주소)을 객체에게 반환함으로써 클래스 타입의 인스턴스를 생성해주는 역할
(타입) 변수명;
변수명 = new (타입)(생성자 초기화);

(타입) 변수명 = new (타입 or 클래스명)(생성자 초기화);

메소드 정의하는 방법

인스턴스 메서드

  • 인스턴스를 생성한 이후 해당 인스턴스를 통해 사용가능

클래스 메서드

  • 인스턴스를 생성하지 않아도 사용가능하기 때문에 클래스 메소드는 인스턴스 변수, 인스턴스 메서드를 사용할 수 없고 지역변수, 클래스 변수를 이용해 구현

메소드 오버로딩

  • 하나의 클래스 안에서는 동일 명칭의 메서드를 복수 정의할 수 없지만 매개변수의 타입이나 매개변수의 수가 다르면 동일 명칭의 메서드 정의가능
  • 하나의 메소드명으로 다양한 기능 사용가능하여 편의성 좋음
// 인스턴스 메서드(행동)
(접근제어자) (반환타입) 메서드명(매개변수...) { ... }

(인스턴스명).메서드명(인자...)

// 클래스 메서드(행동)
static (접근제어자) (반환타입) 메서드명(매개변수...) { ... }

(클래스명).메서드명(매개변수...)

생성자 정의하는 방법

생성자

  • 생성자명은 클래스명과 동일
  • 반환타입이 존재 X, void와 다름
  • 클래스의 생성자가 만들어지지 않은 경우 default 생성자 자동 생성
  • 생성자를 실행시키지 않고 클래스로부터 인스턴스를 생성 X
public 클래스명() {} // default constructor

this 키워드 이해하기

this

  • 객체가 자기 자신을 참조할 때 사용, 해당 클래스를 통해 생성된 인스턴스를 가리키는 참조
  • 인스턴스(멤버) 변수와 같은 이름을 가진 다른 변수가 존재할 때 명시적으로 표현 가능
    this.name = name : 서로 다른 name
  • this(매개변수) 를 통해 클래스의 생성자에 접근 가능, 여러 생성자에 매개변수가 겹치는 게 많을 때 유용할 듯

이진트리 구현하기


출처:
객체지향의 사실과 오해
https://jeeneee.dev/java-live-study/week5-class/
https://junhan0037.notion.site/5-9de97deed2b2465696321e5f5c6b647d
https://www.notion.so/ae6cd0eda34b439992d099bd433239a6

profile
rip

0개의 댓글