[자바] 실전자바(클래스)[240109]

brand_mins·2024년 1월 9일

Java

목록 보기
36/47
- 실전자바 강의를 기반으로 복습한 내용입니다.
- 실전자바는 기초문법 복습과는 달리 적은 내용으로 심도있게 공부하려고 합니다.

1. 클래스가 필요한 이유

  • 자바는 클래스와 객체로 구성되어 있음.
  • 클래스가 왜 필요한지 코드를 살펴보자.
package class1;

public class ClassStart1 {

    public static void main(String[] args) {
        String name1 = "학생1";
        int age1 = 15;
        int grade1 = 90;

        String name2 = "학생2";
        int age2 = 16;
        int grade2 = 80;

        System.out.println("이름: " + name1 + " 나이: " + age1 + " 성적: " + grade1);
        System.out.println("이름: " + name2 + " 나이: " + age2 + " 성적: " + grade2);
    }
}
  • 위 코드의 문제점은 학생수가 늘어날때마다 수작업을 해야 하기 때문에 코드 유지보수하기에 번거로움이 있다.
  • 따라서, 학생 수가 늘어날 때 우리는 배열을 사용함으로써 학생정보를 빠르게 받아볼 수 있다.
package class1;

public class ClassStart2 {

    public static void main(String[] args) {
        String[] studentNames = {"학생1","학생3","학생4","학생5"};
        int[] age = {15,17,10,16};
        int[] grade = {90, 100, 80, 50};
        // studentsName이 배열의 크기가 age, grade 크기의 길이와 일치하다면 한번에 넣어도 된다.
        for(int i=0; i< studentNames.length; i++) {
            System.out.println("이름: " + studentNames[i] + " 나이: " + age[i] + " 성적: " + grade[i]);
        }
    }
}
  • 하지만, 이것도 문제점이 있다. 예를 들면, 학생2의 데이터를 삭제하려고 하면 이름, 나이, 성적 각각의 요소에 맞는 데이터를 삭제해주어야 한다.
  • 이러한 문제점들을 해결하기 위해서 이름, 나이, 성적이 들어있는 클래스를 만들어야 한다.

2. 클래스 도입

  • 학생정보 클래스는 다음과 같다.
  • 아직 접근 제어자를 배우지 않았기에 적용하지 않았다.
package class1;

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

}
  • 클래스에 정의된 변수들을 멤버 변수 또는 필드라고 한다.
- 멤버 변수: 특정 클래스에 소속된 멤버
- 필드: 데이터 항목을 가리키는 용어
  • 클래스는 캐멀 케이스로 사용한다.
package class1;

public class ClassStart3 {

    public static void main(String[] args) {
        Student student1 = new Student(); // 학생클래스를 실제 메모리에 쓸 수 있게 됨.
        student1.name = "학생1";
        student1.age = 15;
        student1.grade = 90;

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

        System.out.println(student1);
        System.out.println(student2);
        System.out.println("이름: " + student1.name + " 나이: " + student1.age + " 성적: " + student1.grade);
        System.out.println("이름: " + student2.name + " 나이: " + student2.age + " 성적: " + student2.grade);

    }
}
  • 기본 자료형의 클래스는 직접 int, String 등으로 선언이 가능하다.
  • 하지만, 사용자가 정의한 타입을 만드려고 하면 클래스가 필요하다.
  • 클래스를 사용해서 실제 메모리에 만들어진 실체를 객체 또는 인스턴스라고 한다.

(1) 코드 분석

Student student1 = new Student();
  • 사용자가 정의한 Student클래스에 student라는 변수를 선언하였다.
  • new Student( )는 student 클래스를 생성하면서 클래스의 참조값이 부여된다. 그 참조값이 student1 변수에 보관한다.
  • student2도 student1과 유사하다.

(2) 참조값을 변수에 보관하는 이유

  • 생성한 객체를 접근하려고 할 때 참조값을 변수에 보관해주어야 실제 메모리에 존재하는 객체에 접근할 수 있다.
profile
IT 개발자가 되기 위한 기록

0개의 댓글