클래스, 인스턴스와 객체

2021. 9. 15. 08:41Java

반응형

클래스

클래스는 연관되어 있는 변수와 메소드의 집합

Class 키워드 뒤에는 클래스 이름과 그 뒤의 중괄호는 클래스의 시작과 끝의 경계를 의미.

 

 

객체

프로그램의 작은 프로그램

 

package org.opentutorials.javatutorials.object;
 
class Calculator{
    int left, right;
      
    public void setOprands(int left, int right){
        this.left = left;
        this.right = right;
    }
      
    public void sum(){
        System.out.println(this.left+this.right);
    }
      
    public void avg(){
        System.out.println((this.left+this.right)/2);
    }
}
  
public class CalculatorDemo4 {
      
    public static void main(String[] args) {
          
        Calculator c1 = new Calculator();
        c1.setOprands(10, 20);
        c1.sum();       
        c1.avg();       
          
        Calculator c2 = new Calculator();
        c2.setOprands(20, 40);
        c2.sum();       
        c2.avg();
    }
  
}

 

 

 

출처 : opentutorials.org

 

Calculator이라는 클래스를 선언 → Calculator라는 객체의 설계도

 

 

출처 : opentutorials.org

 

new Calculator()은 클래스 Calculator를 구체적인 제품으로 만드는 명령어

클래스 == 설계도

인스턴스 == 제품

new를 이용해서 만든 인스턴스를 변수 c1에 담았는데 이유는 인스턴스를 제어하기 위해.

클래스를 사용하기 위해선 일반적으로 인스턴스를 생성해서 사용

하나의 클래스가 여러 개의 인스턴스가 될 수 있다 == 객체지향의 재활용성

 

c1 앞 데이터 타입 자리에 Calculaor는?

클래스를 인스턴스화 할 때 변수에 담아야 하고,

이 때 사용하는 변수의 데이터 타입은 그 클래스가 된다.

 

 

출처 : opentutorials.org

this.

this는 클래스를 통해서 만들어진 인스턴스 자신을 의미

매개 변수는 자신이 속하는 클래스 밖으로 접근 X

반면 메소드 밖에서 선언한 변수는 인스턴스 내의 모든 메소드에서 접근 가능.

 

반응형

'Java' 카테고리의 다른 글

오버라이딩, 오버로딩  (0) 2021.09.23
상속, super과 super()  (0) 2021.09.17
public static void main (String[] args)  (0) 2021.09.14
배열, 메소드  (0) 2021.09.13
자바 입문 2  (0) 2021.09.03