본문 바로가기
Programing Language/Java

[Java] 6. 클래스(Class)와 인스턴스(instance) 멤버

by tangle96 2021. 5. 16.

1.클래스(class)

설계도라고 생각하면 편합니다.

그 하위 멤버(member)로는 변수와 메소드가 들어갈 수 있습니다.

즉, 변수와 메소드의 집합을 클래스로 묶을 수 있는 것이죠.

 

2.인스턴스(instance)

설계도를 통한 제품이라고 생각하면 편합니다.

클래스라는 설계도를 바탕으로 실제 제품=객체 를 만드는 것이죠.

그리고 그 제품안에는 이게 만들어질 때

꼭 실행되어야하는 constructor(생성자)의 유무가 있어야합니다.

 

그럼 예제를 통해 살펴봅시다.

Student class 입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package classpart;
 
public class Student {
    int studentID;
    String studentName; //String ->문자열을 구현해 놓은 클래스
    int grade;
    String adress;
    
    //학생이 가지는 속성
    
    public Student() { //생성자는 클래스 이름과 동일합니다.
        
    }
    public Student(int id, String name) { //기본 생성자 생성자 언제쓰냐면
        //내가 처음 이 객체를 생성하면서 하고싶은 일들 구현
        //ex) 내가 꼭 이 객체는 아이디or이름 을 가지고 생성해야한다.
        //생성자 오버로딩(매개변수만 다른경우)
        
        studentID = id;
        studentName= name;
        
        //당연히 매개변수로 들어올 값을 속성 값에 넣어야겠죠?
        
        
    }
    
    public void showStduentInfo() {
        System.out.println(studentName + "," + adress);
    }
    public String getStudentName() { //가져가는 느낌 ->사용하는 입장
        return studentName;
    }
    
    public void setStudentName(String name) { //외부에서 사용하는거
        studentName = name;
        
    }
    public static void main(String[] args) {
        
        Student studentLee =new Student(100"이순신");
        studentLee.adress = " 서울시 영등포구 여의도동";
        
        Student studentKim =new Student(100"김유신");
        studentKim.adress = "미국 산호세";
        
        
        studentLee.showStduentInfo();
        studentKim.showStduentInfo();
        
        System.out.println(studentLee);
        System.out.println(studentKim); //위치에 대한 주소값
        
    
        
    }
        
        
    
    }
    
    
 
 
cs

 

 

차근차근 하나씩 봅시다

 

studentID (학번)

studentName(이름)

grade (성적..이긴한데 안쓸겁니다)

adress (주소)

변수, 즉 학생이 가지는 속성을 변수로 선언 했습니다.

 

그다음 public Student로 생성자를 선언해줄겁니다.

 

 public Student() { //생성자는 클래스 이름과 동일합니다.

        

    }

    public Student(int id, String name) { //기본 생성자 생성자 언제쓰냐면

        //내가 처음 이 객체를 생성하면서 하고싶은 일들 구현

        //ex) 내가 꼭 이 객체는 아이디or이름 을 가지고 생성해야한다.

        //생성자 오버로딩(매개변수만 다른경우)

        

        studentID = id;

        studentName= name;

        

        //당연히 매개변수로 들어올 값을 속성 값에 넣어야겠죠?

        

        

    }

 

아까 설명했듯 학생의 새 정보를 만들때 꼭 필요한 겁니다 이름과 학번은 있어야 만들 수 있겠죠?

그래서 생성자 인자로 id값과 name 값을 받으면 그것을 토대로 객체(제품) 여기선 학생을 만드는 겁니다

 

코드마다 주석은 달아놓았습니다.

 

 

public void showStduentInfo() {

        System.out.println(studentName + "," + adress);

    }

    public String getStudentName() { //가져가는 느낌 ->사용하는 입장

        return studentName;

    }

    

    public void setStudentName(String name) { //외부에서 사용하는거

        studentName = name;

        

    }

 

그리고 나서 showStudentInfo 이름과 주소를 출력할 메서드를 만들고

 

get set 메서드를 통해 get은 return값이 있어 return 반환값을 다른곳에 쓰기 위해 필요하며

set은 세팅한다는 느낌으로 외부에서 재정의 하기 위해 사용합니다.

 

public static void main(String[] args) {

        

        Student studentLee =new Student(100"이순신");

        studentLee.adress = " 서울시 영등포구 여의도동";

        

        Student studentKim =new Student(100"김유신");

        studentKim.adress = "미국 산호세";

        

        

        studentLee.showStduentInfo();

        studentKim.showStduentInfo();

 

대망의 메인입니다

 

객체 생성을 잘 봅시다

 

Student (객체의 타입, Student 클래스를 우리가 만들었으니 이 형태로 만들거야 이런 느낌입니다.)

studentLee (그 만들 제품의 이름입니다. sutdnetLee라고 합시다)

= new Stduent(100, "이순신");

새 학생 객체에.. 

public Student(int id, String name) { //기본 생성자 생성자 언제쓰냐면

 

아까 이 생성자 기억나요?

바로 여기에 들어가는겁니다. 생성자서 인자를 받기로 했기 떄문에

100 = id로, "이순신"=name 으로 설정된 새 객체가 만들어지는거죠

 

자이제 Student클래스(설계도)를 통해 인스턴스(제품) studentLee가 만들어졌습니다. 

studentLee.adress = " 서울시 영등포구 여의도동";

이 객체는 이제 Student클래스(설계도) 에 있는

변수와 메소드를 사용가능합니다.

 

 

 

아까 

public void showStduentInfo() {

        System.out.println(studentName + "," + adress);

    }

 

학생의 정보를 보기위한 메서드 하나 선언했었죠?

 

studentLee.showStduentInfo();

 

메인 함수에 출력해 정보를 봅시다 ㅎㅎ

 

짜잔 이름과 주소가 들어간 학생의 정보가 출력 됩니다.

 

객체의 협업으로 넘어가기 직전

 

아주 중요한 핵심을 짚어봤습니다.

댓글