[Java] 클래스와 객체
클래스와 객체는 제가 대학교 2학년 C++ 기초 수업 때 맨 마지막으로 배웠는데 그때는 그냥 성적을 받기 위해 무지성 암기만 진행해서 정확히 뭔지 잘 감을 못 잡았는데 이제는 주도적으로 배워보니 그때보다 더욱 쉽게 나름대로 이해할 수 있던 거 같습니다.
클래스와 객체
처음에 책을 보고 배워보려니 잘 이해가 되지 않았는데 다양한 유튜브를 통해서 접근해보니 생각보다는 쉽게 느껴졌습니다.
쉽게 클래스는 공장의 설계도 객체는 그 공장에서 만들어진 재료라고 하니 이해가 쉬웠습니다.
흔희 저희가 이야기하는 객체지향프로그램이란 객체에서 만들어진 재료를 쌓아서 만든 결과물이라고 이해할 수 있습니다.
자바 프로그램은 main함수를 통해서 작동을 하는데 실제 클래스를 객체로 만드는 코드는 아래와 같습니다.
Npc saram1 = new Npc();
이때 Npc은 클래스 saram1은 변수명 Npc()은 생성자입니다.
class Npc
{
// 필드 - 데이터
String name;
int hp;
// 메서드 - 동작
void say()
{
System.out.println("안녕하세요.");
}
}
해당 클래스는 데이터를 저장해 놓을 수 있는 필드, 동작을 진행하는 메서드로 이루어져 있습니다.
public class NpcUse
{
public static void main(String[] args) {
Npc saram1 = new Npc();
saram1.name = "경비";
saram1.hp = 100;
System.out.println(saram1.name + ":" +
saram1.hp);
// 메서드 호출
saram1.say();
}
}
활용 방법은 [클래스명. 클래스 내의 필드 및 메서드] 이렇식으로 사용할 수 있습니다.
접근 제한자
코드를 작성하다 보면 코드가 복잡해져서 코드를 분리해야 되는 상황이 발생할 수 있습니다. 따로 클래스를 보관할 수 있는 점을 활용하여 클래스와 구동 파일을 분리해서 작성할 수 있습니다.
// 메인파일
package study2;
public class study1
{
public static void main(String[] args) {
test test = new test();
System.out.println(test.a);
System.out.println(test.b);
System.out.println(test.c);
System.out.println(test.d);
}
}
//Class 파일
package study2;
public class test
{
public int a = 10;
protected int b = 20;
int c = 30;
private int d = 40;
}
위와 같은 식으로 코딩을 하면 에러가 발생합니다.
왜?
10번 줄은 private로 정의되어 같은 클래스 내부에서만 접근 가능하기 때문입니다.
public | 퍼블릭. 외부 클래스 어디에서나 접근 가능합니다. |
protected | 프로텍티드. 같은 패키지 내부와 상속 관계의 클래스에서만 접근 가능합니다. |
void (작성X) | 디폴트. 같은 패키지 내부에서만 접근 가능합니다. |
private | 프라이빗. 같은 클래스 내부에서만 접근 가능합니다. |
public의 경우 같은 프로젝트 내에서 진행이 되어 있으면 사용이 가능 하지만 protected와 void는 같은 패키지 내에 있어야 되지만
public class study1 extends test // extends를 활용해 상속 활용
위와 같은 방법으로 상속관계를 만들어서 protected 접근 제한자를 사용할 수 있습니다.
'개발 > 자바' 카테고리의 다른 글
[Java] 계산기 만들기 (0) | 2022.06.10 |
---|---|
[Java] 메서드 학습 (0) | 2022.06.10 |
[‘자바의 정석’으로 배우는 자바.2] 변수 (0) | 2022.05.27 |
[‘자바의 정석’으로 배우는 자바1] 자바에 대해서 (0) | 2022.05.26 |
댓글