개인 자료란 (JE)

  서버 커뮤니티


Profile WintChoco 대표칭호 없음

wincho_ 8ff851e059fb4dd59be0b55d44f8149f

Profile

강좌 및 개발 개발자란 개발자 강좌 일반 프로그래밍

[게임개발로 시작하는 자바 EP. 2] 자바 클래스 (Class) & 접근 제어자

2022.01.11 조회 수 2404 추천 수 1

이전 글: EP. 1 - 프로그램 진입점 (main)

다음 글: EP. 3 - 변수

4ba4bc43516ba9848ecc6b1997bf2989.png

? 진짜 뭐지


| Step 1. 객체 & 클래스

클래스는 유사한 특징을 가진 객체의 속성을 모아놓은 집합체이고 패키지에 담깁니다.

패키지는 클래스를 담는 폴더이구요.


예를들어서 학교에는 1반, 2반, 3반이있고

각 반에는 1~30번의 학생이 있다고 합시다.

각 학생은 이름, 나이, 성적등의 데이터를 가지고있고

반은 반 이름과 학생들의 리스트를 가지고있을겁니다.


여기서 우리는 학생, 반, 학교라는 클래스를 만들수 있습니다


그럼 클래스를 정의하려면 어떻게 해야할까요?

class 클래스이름 { }

으로 정의를 할수있습니다.

저번글에서 파악하셨을수도 있지만 자바의 모든 코드는 { }안에 작성됩니다.

저는 앞으로 { }를 '그룹'이라고 부르겠습니다


클래스 그룹 안에는 메서드(클래스 안에있는 함수), 필드(클래스 안에있는 변수)가 들어갈수 있습니다.


예를들어 Student라는 클래스를 만들어보죠.

저번글에서 Main을 생성했던 방법으로 Student라는 클래스를 생성해줍니다.


그룹 안에는 String형 변수 'name', int형 변수 'age'를 넣어주겠습니다.

8abece0084c9cfc33d0396e475e538f8.png

(변수 (필드)에 관해선 다음글에서 더 자세하게 설명드리겠습니다)

이제 Student라는 클래스와 name, age라는 변수가 생겼습니다


클래스에있는 또 다른 기능은 생성자입니다.

자바에서는 new 클래스이름();을 통해 객체를 생성할수 있습니다

예를들어, 반에 새로운 전학생이 오게되었습니다.

하지만 이 학교엔 전학생에 대한 자료가 없죠, 

그러니 전학생에게 이름과 나이를 물어서 데이터를 저장해야하는것과 비슷합니다


생성자는 객체를 생성할때 실행할 코드, 필요한 인자등을 정의해주는 함수입니다

클래스 그룹 안에

public 클래스이름(인자) { 코드 }

를 작성하시면 됩니다.

be90cabfd168377e4469fae2fb55dbf6.png

(this는 해당 클래스를 뜻하는 키워드입니다)


그러면 이제 객체를 생성해봅시다.

저번에 만들었던 Main클래스로 가서,

cb66cdecdbf8ddfc3bf38cf10bb87281.png

이렇게 작성하시면 됩니다.

new Student("이름", 나이); 부분은 아까 설명했던 객체를 생성하는 코드이고,

변수이름.name은 Student 클래스에 있는 필드의 값을 의미합니다.


| Step 2. 접근 제어자

접근 제어자 (Accessor)는 4가지의 종류가 있습니다.

public, private, default, protected.

아까 Student클래스에서 필드, 생성자를 작성할때 썼던 public도 접근 제어자입니다.


public
모든곳에서 사용가능
private
해당 클래스에서만 사용가능 (상속받는클래스에서도 사용 불가)
default
(*주의 default를 작성하는것이 아닌 public부분을 비워둬야함.)
별명: package-private.
같은 패키지내에서만 사용가능.
protected
해당 클래스 또는 해당클래스를 상속받는 클래스에서 사용가능

아니.. 진짜로 인기커뮤글에 왜 자꾸 올라가요...?

댓글이 없길래 인기가 없는줄알았더니 왜 조회수만 올라가요...?


다음강 보기


6개의 댓글

HAN1110
2022.01.11

여담으로 default 는 상속 받으면 사용 가능합니다.

HAN1110
2022.01.12

@WintChoco

저 혹시 이거 보조하는 글 만들어도 되나요?

KaMa_
2022.01.13

shiu는 어떤 뜻이가용??

명이
2022.01.13
@KaMa_

사람 이름입니다. 옆에 "김시후"라고 name값이 지정되어 있습니다.

KaMa_
2022.01.13
@명이

student shiu(라는 학생)=(전학생) new student ("이름 ",나이); 전학생의 이름과 나이 라는 뜻이군요

 

WintChoco
2022.01.14
@KaMa_

Student sihu; 에서 Student는 변수의 타입, sihu는 변수 이름입ㄴ다