2024. 1. 10. 22:46ㆍJAVA
클래스. 왜 필요할까?
학생의 정보를 변수에 담에 해보자
String studentName = "김어항";
int studentAge = 15;
고민할 거리도 없이 이렇게 작성될 것이다.
두명의 학생 정보를 담으려면?
String student1Name = "김어향";
int student1Age = 15;
int student1Score = 90;
String student2Name = "김장육";
int student2Age = 20;
int student2Score = 33;
아직 무난하다.
그렇다면.. 50명 100명 1천명은 어떻게 해야 할까?
반복문으로 어떻게든 되지 않을까? ->안타깝게도 변수명이 다르기 때문에 그럴 수는 없다.
그렇다면 같은 정보들의 집합인 배열로 어떻게 되지 않을까?
String[] studentNames = {"김어향", "김장육"};
int[] studentAges = {15, 20};
for (int i = 0; i < studentNames.length; i++) {
System.out.println("이름 : " + studentNames[i] + "나이: " + studentAges[i]);
}
어떻게든 되기는 된다. 그러나 뭔가.. 뭔가 이상하고 불편하다. 관리도 번거로워 보인다.
김어향에 대한 정보를 확인하기 위해서 String 배열도 봐야하고 int[] 배열도 봐야하다.
그렇다면 이건 어떨까?
Student[][] student = {{"김어향", 15, 90}, {"김장육", 20, 33}}; // 배열은 하나의 타입만 담을 수 있다. 내가 임의로 작성했던 이 코드는 숫자, 문자 등이 짬뽕되어 사용할 수 없다.
그럴듯 해보인다. 그런데.. 어떤 인자가 어떤 내용에 대한 값인지 알 수 없다.
90세 어향 어르신의 손자 수가 15살인지
15세 김어향 어린이의 용돈이 90만원인지 확인할 수 없다.
더욱이, 배열은 한번 생성하면 길이 조절이 안 된다.
내용을 추가하려면, 배열 생성, 복사 등이 이루어져야 하는데 너~~무 번거롭다.
.. 배열만으로는 관리가 어렵다.
이러한 문제점들을 해결하기 위한 것이 바로 클래스이다.
클래스란
사람이 관리하기 쉽도록 필요한 개념들을 하나로 묶은 것이다.
public class Student {
String name;
int age;
int score;
}
학생을 관리하는 데 필요한 정보를 기반으로 작성한 클래스이다.
여기서
String name;
int age;
int score;
을 일컬어 필드(field), 혹은 멤버 변수 라 칭한다.
클래스를 작성 했으니 사용도 해보자.
Student student1 = new Student();
student1.name = "김어향";
student1.age = 15;
student1.score = 90;
Student student2 = new Student();
student2.name = "김장육";
student2.age = 20;
student2.score = 33;
만들고, 쓴다.
뭐가 느껴지지 않는가? 이 편리함. 안락함. 좋아진 점은 무엇인가?
장점 1. 모든 매개변수를 새롭게 작성하지 않아도 된다.
String stu1Name
int stu1Age
int stu1Score
String stu2Name
int stu2Age
int stu2Score
장점 2. 하나만 바라보면 많은 정보를 얻을 수 있다.
String[] studentName = {"김어향" , "김장육"};
int[] studentAge = {15, 20};
배열을 여러개 확인 해야 하던 배열 방식과 다르게 생성한 인스턴스 하나만 보면 많은 정보를 확인 할 수 있다.
Student student1 = new Student();
student1.name = "김어향";
student1.age = 15;
student1.score = 90;
Student student2 = new Student();
student2.name = "김장육";
student2.age = 20;
student2.score = 33;
장점3. 타입에 상관 없이 다양한 타입을 넣을 수 있다.
// 사용 불가
Student[][] student = {{"김어향", 15, 90}, {"김장육", 20, 33}}; // 배열은 하나의 타입만 담을 수 있다.
장점4. 어디에 어떤 값이 들어 있는지 정확하게 알 수 있다.
생성한 인스턴스.필드명 을 통해 어떤 학생의, 어떤 필드의 값인지 명확하게 확인 가능 해졌다.
System.out.println("이름: " + student1.name + " 나이 : " + student1.age + " 점수 : " + student1.score);
System.out.println("이름: " + student2.name + " 나이 : " + student2.age + " 점수 : " + student2.score);
너무 좋다..
이러한 이점들을 가져다 주는 클래스를 '설계도' 라고 부르기도 한다.
이 설계도를 통해 만든 객체를 '인스턴스' 라고 부른다.
우리는 이런 클래스(설계도)를 가지고 쉽게 관리할 수 있는 인스턴스를 수만, 수천 개 만들어 사용할 수 있게 됐다.
이거시 클라쓰인가?!
'JAVA' 카테고리의 다른 글
| 참조_기본형과 참조형 (0) | 2024.01.11 |
|---|---|
| Class_instance (0) | 2024.01.10 |
| Method_오버 로딩 (0) | 2024.01.10 |
| Method_호출과 값 전달 (0) | 2024.01.07 |
| Method_리턴 (0) | 2024.01.07 |