클래스(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()
- 스택(stack)
인스턴스(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 |
출처
'JAVA > 언어입문' 카테고리의 다른 글
자바(JAVA) - 참조자료형(Reference Data Type) (0) | 2022.03.14 |
---|---|
자바(JAVA) - 생성자(constructor) (0) | 2022.03.09 |
자바(JAVA) - 객체지향 프로그래밍(OOP) (0) | 2022.03.09 |
자바(JAVA) 반복문(while, do-while, for)/ Continue/ Break (0) | 2022.03.07 |
자바(JAVA) 조건문(if / switch-case) (0) | 2022.03.07 |
댓글