하루를살자

Class vs Object vs Instance 그리고 생성자 (Constructor) 예제 본문

Java

Class vs Object vs Instance 그리고 생성자 (Constructor) 예제

Kai1996 2021. 11. 28. 23:34

 

Class vs Object vs Instance 

 

-클래스 (Class)

1. 객체를 만들어 내기 위한 설계도 혹은 툴

2. 연관되어 있는 변수와 메서드의 집합 

 

- 객체 (Object) 

1. 소프트웨어 세계에 구현할 대상 

2. 클래스에 선언된 모양 그대로 생선된 실체 

특징 

--> '클래스의 인스턴스(Instance)' 라고 부른다. 

--> 객체는 모든 인스턴스를 대표하는 포괄적인 의미를 갖는다. 

--> Object Oriented Programming (OOP) 의 관전에서 클래스 의 타입으로 선언되었을때 "객체" 라고 부른다. 

 

- 인스턴스 (Instance) 

1. 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체 

-> 즉, 객체를 소프트웨어에 실체화 하면 그것을 '인스턴스' 라고함. 

-> 실체화된 인스턴스는 메모리에 할당됨. 

특징 

--> 인스턴스 는 객체에 포함된다고 볼 수 있다.

--> oop 의 관점에서 객체가 메모리에 할당되어 실제 사용될때 '인스턴스' 라고 부른다. 

--> 추상적인 개념(또는 명세) 과 구체적인 객체 사이의 관계 에 초점을 맞출 경우에 사용한다. 

 

- 소스파일 명과 class 선언

1. Class 명은 파일명 과 대소문자가 동일해야한다.

2. public class filename {} 의 source file 이름은 filename 과 같다. 

3. 하나의 source file 안에는  오로지 단 하나의  public class 가 존재 해야 하고, 많은 class 들을 하나의 source file 에 넣고 싶다면 public 을 생략한 class 를 써주어야 컴파일 에러가 안 난다. 

이는 컴파일을 할 때, Java 컴파일러가 소스 코드에 적힌 클래스 명과 동일한 파일명 을 찾게 되는데, 이름이 다를 시, 에러가 나기 때문이다.  

 

- 생성자 (Constructor) 

Constructor 는 객체 를 초기화 하기위한 Java 의 특별한 방법이다. 생성자는 클래스의 객체가 생성될때 쓰이고, 그 객체 속성 초기값을 설정해 주는데 사용가능하다. 

특징 

--> Return 형을 명시 하지않음 

--> Class 명과 같은 이름이다

--> Overloading 이 가능하다

--> Parameter 가 존재하면 파라미터로 멤버 변수의 값을 초기화 한다

--> 생서자를 선언하지 않으면 컴파일러에서 자동으로 기본 생성자 (Default Constructor) 를 생성한다. 

 

 

Student.java (Student 라는 이름을 가진 Class)

public class Student {
    String subject; 
    int stduent_num; 

    public Student(){
        subject = "Initial";
        stduent_num = 12345678;
    }
   
}

학생은 subject 과 student_num 이라는 속성 두가지를 가지고있다. 여기서 public Student() 는 기본 생성자, 전달인자 (Parameter) 가 아무것도 없는 형식으로, 아래와 같이 Student 클래스를 Instance 시킬시 각 속성이 기본적으로 초기에 갖는 값을 지정해줄수있다.

 

Test1.java (Student 를 객체화 시키고 초기값이 잘 적용되어있나 확인) 

public class test1 {
 public static void main(String[] args) {
     Student s = new Student();
     System.out.println(s.stduent_num+s.subject);
 }
}

 

Output

 

 

 

Reference 

 

'Java' 카테고리의 다른 글

생성자 (Constructor) 와 Getter, Setter  (0) 2021.11.30
JAVA(자바) Windows / VSCODE 에 세팅하기  (0) 2021.11.19
Comments