본문 바로가기
JAVA/언어입문

자바(JAVA) - 클래스(class) / 메소드(method) / 인스턴스(instance)

by Sunyoung95 2022. 3. 9.
클래스(Class)
  • 객체에 대한 속성과 기능을 코드로 구현한 것
  • 표현법 : 클래스를 정의한다.
  • 객체에 대한 청사진 (blueprint)
  • 구성요소
    • 멤버변수(member variable) : 객체의 특성(property)와 속성(attribute)
    • 메서드(method) : 객체의 기능
    • 더보기
      멤버변수 : 학번, 이름, 학년, 사는곳, ...
      메서드 : 수강신청, 수업듣기, 시험보기, ...
  • 클래스 정의하는 법 
    • (접근제어자) class 클래스이름 {
      	멤버변수;
      	메서드;
      	}
    • 클래스이름은 대부분 대문자로 시작
    • 하나의 java 파일에 하나의 클래스를 두는 것이 원칙
    • 하지만 여러개의 클래스가 같이 있는 경우 public 클래스는 단 하나이며, public클래스와 자바파일의 이름은 동일해야한다.
    • JAVA의 모든 코드는 class 내부에 위치한다.

  • 클래스로 객체 생성
    • new 예약어를 이용하여 객체 생성
    • 클래스형 변수이름 = new 생성자;
    • Student studentLee = new Student();  // Student() : class Student의 생성자

 

메서드 (Method)
    • 객체의 기능을 제공하기 위해 클래스 내부에 구현되는 함수
    • 함수
      • 하나의 기능을 수행하는 일련의 코드
      • 중복되는 기능은 함수로 구현하고 함수를 호출해 사용
    • 정의하는 법

함수 정의하는 법

  • 사용 이유
    • 코드의 간결성, 효율성을 위해
      • 중복되는 기능일 경우 사용할때마다 작성하지 않고 함수를 불러와서 간결하게 사용가능하다
    • 각 기능을 분리하여 유지/보수에 유리
  • 스택 메모리 
      • 스택(stack) 
        • 함수가 호출될 때 사용하는 메모리
        • 함수의 기능수행이 끝나면 자동으로 반환되는 메모리
    public class FunctionTest {
    
        public static void main(String[] args) {
            int n1 = 10;
            int n2 = 100;
    
            int total = addNum(n1, n2);
            System.out.println(total);  // 110
            }
            
        public static int addNum(int num1, int num2) {
        	int result = num1 + num2;
            return result;
            }
        }
    • 구조 : main() → addNum()

 

인스턴스(Instance)
  • 설계도(클래스 class)를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체
  • 어떤 원본(클래스일수도 있고 다른것일 수도 있다)으로부터 생성된 복제본을 의미
  • 하나의 클래스코드로부터 여러개의 인스턴스를 생성
  • 실체화된 인스턴스는 힙(heap)메모리에 할당된다.
  • 각각의 인스턴스는 다른 메모리에 다른 값을 가진다.
//위에서 생성한 Student 클래스로 인스턴스를 생성

Student studentLee = new Student();
studentLee.studentName = "이순신";
studentLee.grade = 3;
studentLee.studentID = 100;
studentLee.address = "서울시 서초구 서초동";

Student studentKim = new Student();
studentKim.studentName = "김구";
studentKim.grade = 2;
studentKim.studentID = 101;
studentKim.address = "서울시 강남구";
  • 각 생성된 인스턴스는 stack과 heap에 주소와 정보를 저장한다.

  • 각 인스턴스를 위한 heap의 메모리가 잡히고 studentLee와 studentKim은 각기 다른 heap주소를 할당받는다.
  • 더보기
    Stack
        함수 호출시 생성된 지역변수/매개변수가 저장되는 영역
        함수 호출이 완료되면 변수들(지역변수/매개변수)은 자동으로 사라진다.
    Heap
        동적할당으로 생성되는 메모리 영역
        프로그래머가 관리하는 메모리 영역
        프로그래머의 필요에 의해서 메모리공간이 할당 및 소멸
         → JAVA의 경우 Garbage Collector가 없애준다.

 

용어 정리
객체(Object) 객체지향 프로그램의 대상, 생성된 인스턴스
클래스(Class) 객체를 프로그래밍하기 위해 코드로 만든 상태
인스턴스(Instance) 클래스가 메모리에 생성된 상태
멤버변수(Member variable) 클래스의 속성, 특성
메서드(Method) 멤버변수를 이용하여 클래스의 기능을 구현
참조변수(Reference variable) 메모리에 생성된 인스턴스를 가리키는 변수
참조값(Reference) 생성된 인스턴스의 메모리 주소에 연결된 정수값
Virtual Machine에서 자동생성됨
객체구분을 위한 유일한 Key

 


출처

https://dohe2014.tistory.com/entry/%EC%B0%B8%EC%A1%B0reference%EC%99%80-%EC%B0%B8%EC%A1%B0%EB%B3%80%EC%88%98reference-variable

 

참조(reference)와 참조변수(reference variable)

연산자 new는 클래스의 새로운 인스턴스에 대한 참조(reference)를 리턴합니다. The new operator returns a reference to a new instance of a class. * 여기서 참조(reference)는 참조변수(reference variable)..

dohe2014.tistory.com

 

댓글