클래스는 설계도라고 했다.
이제 우리는 그 설계도를 가지고
뭔가를 만들건대
그게 인스턴스라고 한다.
저번에 만들었던 교실의 클래스들을 가지고 연습을 해보자
2023.07.14 - [Java] - 백엔드_자바__클래스 만들기
26 패키지에 저번에 만들었던 클래스 중 Student, Teacher, Subject, Test를 가지고 왔다.
먼저 Student 클래스를 가지고
인스턴스를 실습해보자
인스턴스화 하는 법
이렇게 하면 인스턴스화를 할 수 있는데
나의 이해를 위해서 조금 들여다보자
이 코드는 이전에 Student라는 클래스를 미리 만들어 놓았기 때문에 사용할 수 있다.
이미지에 보면 보인다.
근데 애초에 인스턴스화를 왜 하는 거지?라는 의문이 들었다.
그래서 검색을 해보니
나와 같은 의문을 갖고 있던 한 분이 정리를 해주셨다.
그리고 아주 좋은 예시를 들어주셔서 훔ㅊ.....
출처 https://whatisthenext.tistory.com/36
[JAVA} 클래스와 인스턴스(Class, Instance)
0. 들어가기 앞서 클래스는 기본 뼈대이고인스턴스는 구체적인 "상태(변수)" 와 "행위(기능)"의 집합이라고 생각하자. 위 카드를 생각해본다면카드 클래스에 대표적으로 들어가야 할 것들이 있을
whatisthenext.tistory.com
백번 감사합니다!
다시 본론
위에 말한 내용이지만 이렇게 보니까 뭔가 더 와닿았다.
그니까 인스턴스는 하나의 가치가 되도록 생명을 불어넣어주는? 그런 느낌인 거 같다.
student1.name = "Bob";
student1.studentNumber = 20;
student1.gender = "Male";
student1.classRoomNumber = 3;
student1.schoolName = "KR";
student1.classYear = 1;
이렇게 일개 student1에게 이름을 불러주었다
그에게 번호를 주고
성별도 주었다.
다른 인스턴스들과 함께 공부할 학교와 반을 주었다.
이렇게 보니까 약간 시뮬레이션 게임의 신? 같은 느낌?
카드 예시에 취해서 깜빡할 뻔했다.
Student student1 = new Student();
여기서 앞에 Student는 클래스의 형태???인데 그냥 이 이름의 클래스를 만들어서 이렇게 쓰는 거다.
두 번째는 변수명이라고 생각하면 되고
그다음은 new 생성자();
를 하면 된다.
생성자는 그냥 클래스 이름 한번 더 쓰고 () 이거 해주면 된다.
이렇게 하고 출력하는 방법은
System.out.println(student1.name);
이렇게 하면 Bob이라고 나온다.
내가 이름을 불러주기 전까지
그는 그저 그런 클래스 덩어리에 불과했다.
근데 학생 한 명 하는데도 이렇게 빡씬데
학생 여러명 할 땐 어카지.......
다행히 해결 방법이 있었다.
애초에 클래스를 만들 때
생성자 오버로드를 만들면 된다
오...버...로..드......???.
오버로드는 같은 생성자 이지만 파라미터를 다르게 주겠다라는 건데
이 클래스는 기존에 만들어 두었던 Student 클래스이다.
클래스 안에서 이런식으로 파라미터를 미리 작성해 두면
인스턴스해서 출력할 때 편하다.
오버로드 위에 Student가 하나 더 있는데 이건 기본 생성자이다.
오버로드 하기전에 하나는 만들어 놓아야 한다.
학생1과 학생2에 대해서 출력을 했는데
이렇게 하면 위에서 했던짓을 하지 않고
편하게 출력할 수 있다.
이제 그동안 했던 것들을 가지고 하나의 상황을 만들어 보자.
교실 내에서 선생님과 학생들의 관계를 간단히 표현 해보자
이전에 지정해 두었던 생성자 오버로드?를 이용해서 진행
이 오버로드가 없었으면 스크린샷을 몇장을 찍었어야 됐을까?
'Java' 카테고리의 다른 글
백엔드_자바__객체의 상속 (15) | 2023.07.17 |
---|---|
자바_객체지향__커피 주문 상황 (8) | 2023.07.16 |
백엔드_자바__클래스 만들기 (18) | 2023.07.14 |
백엔드_자바__Array (12) | 2023.07.13 |
백엔드_자바__반복문 제어 continue, break 369게임, 친구야 공부해 (8) | 2023.07.13 |