[Java] 클래스의 도입

2024. 11. 25. 15:43·Back-end/Java

 

❗해당 포스팅은 인프런에서 제공해주는 강의 내용을 개인적으로 정리하였음을 알려드립니다.

 

김영한의 실전 자바 - 기본편 강의 | 김영한 - 인프런

김영한 | 실무에 필요한 자바 객체 지향의 핵심 개념을 예제 코드를 통해 쉽게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문

www.inflearn.com

 


학생들의 정보를 출력하는 시스템이 있다고 가정하자

 

1. 변수 사용

public class ClassStart1 {

    public static void main(String[] args) {
        String student1Name = "학생1";
        int student1Age = 15;
        int student1Grade = 90;

        String student2Name = "학생2";
        int student2Age = 16;
        int student2Grade = 80;

        System.out.println("이름:" + student1Name + " 나이:" + student1Age + " 성적:" + student1Grade);
        System.out.println("이름:" + student2Name + " 나이:" + student2Age + " 성적:" + student2Grade);
    }
}

위 코드의 문제점은 학생이 추가될 때마다 변수를 추가적으로 선언해야하며, 출력하는 코드도 추가해야한다.

 

2. 배열 사용

public class ClassStart2 {

    public static void main(String[] args) {
        String[] studentNames = {"학생1", "학생2"};
        int[] studentAges = {15, 16};
        int[] studentGrades = {90, 80};

        for (int i = 0; i < studentNames.length; i++) {
            System.out.println("이름:" + studentNames[i] + " 나이:" + studentAges[i] + " 성적:" + studentGrades[i]);
        }
    }
}

배열을 선언함으로써 변수를 추가하지 않아도 되고, 출력 코드도 하나로 통일됐지만, 여전히 문제가 남아있다.

학생을 제거할 때 정확한 인덱스에서 이름,나이,성적을 제거해야하는데, 실수할 가능성이 높기때문이다.

 

이름, 나이, 성적별로 관리하는 것보다 학생별로 이름, 나이, 성적을 관리하는 것이 더 편리하다.

 

3. 클래스 사용

public class Student {
    String name;
    int age;
    int grade;
}

학생별로 관리하기 위해 Student 클래스를 작성한다.

클래스에 정의된 변수는 멤버변수 또는 필드라 부른다.

 

클래스는 관례상 대문자로 시작하고, 낙타표기법을 사용한다.

public class ClassStart3 {

    public static void main(String[] args) {
        Student student1;
        student1 = new Student(); //x001
        student1.name = "학생1";
        student1.age = 15;
        student1.grade = 90;

        Student student2;
        student2 = new Student(); //x002
        student2.name = "학생2";
        student2.age = 16;
        student2.grade = 80;

        System.out.println(student1);
        System.out.println(student2);
    }
}

클래스의 의미는 학생(Student)이라는 타입을 새로 만드는 것이다.

int 타입이 있고, String 타입이 있듯이 Student 타입을 만든다.

 

이때, 클래스를 설계도, 실제 메모리에 만들어진 실체를 객체 또는 인스턴스라고 한다.

클래스 = 붕어빵 틀

객체 또는 인스턴스 = 붕어빵

 

즉, Student 클래스를 기반으로 student1과 student2 객체 또는 인스턴스를 만들었다.

 

new Student()의 뜻은 Student 클래스 정보를 기반으로 새로운 객체를 생성하여, 메모리에 객체를 생성한다.

 

이렇게 객체를 생성한 후 자바는 메모리 어딘가에 있는 이 객체에 접근할 수 있는 참조값을 반환한다.

 

student1에 객체의 참조값을 보관하게된다.

 

이제 이 참조값이 저장된 변수를 사용하여 객체에 접근이 가능하다.

 

student1과 student2를 출력해보면 각각의 참조값을 확인할 수 있다.

 

(패키지+클래스정보)@(참조값)

'Back-end > Java' 카테고리의 다른 글

[Java] static 메서드  (1) 2024.12.20
[Java] static 변수  (0) 2024.12.16
[Java] 자바 메모리 구조  (0) 2024.12.14
[Java] 기본형과 참조형  (3) 2024.12.03
[Java] 배열의 도입  (2) 2024.11.27
'Back-end/Java' 카테고리의 다른 글
  • [Java] static 변수
  • [Java] 자바 메모리 구조
  • [Java] 기본형과 참조형
  • [Java] 배열의 도입
dev_ajrqkq
dev_ajrqkq
알고리즘 천재가 될 거야
  • dev_ajrqkq
    기록이 자산이다
    dev_ajrqkq
  • 전체
    오늘
    어제
    • 분류 전체보기 (147)
      • Front-end (0)
      • Back-end (11)
        • Spring (1)
        • Java (8)
      • CS (9)
        • 데이터베이스 (5)
        • 네트워크 (4)
      • Algorithm (80)
      • 이것저것 (0)
      • 버그잡기 (1)
      • TIL (37)
      • 후기 (1)
      • 취준 (0)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      TypeScript
      99클럽
      코딩테스트준비
      티스토리챌린지
      오블완
      Til
      항해99
      개발자취업
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.2
    dev_ajrqkq
    [Java] 클래스의 도입
    상단으로

    티스토리툴바