기본 구조
객체를 정의 → 객체의 기능 구현 → 객체 사이의 협력 구현
클래스(Class)
객체에 대한 속성과 기능을 코드로 구현. 객체에 대한 청사진
"클래스를 정의 한다"
객체의 속성
객체의 특성, 속성 등을 멤버 변수(member variable)로 나타냄
객체의 기능
객체가 하는 기능들을 메서드(method)로 구현
클래스 정의하기
class는 대문자로 시작
하나의 java 파일에 하나의 클래스가 원칙, 여러 클래스가 같이 있는 경우 public class는 단 하나여야 하며,
public 클래스와 자바 파일의 이름은 동일해야 한다.
자바의 모든 코드는 class 내부에 위치한다.
(접근 제어자) class 클래스 이름{
멤버 변수;
메서드;
}

메서드
객체의 기능을 제공하기 위해 클래스 내부에 구현되는 함수
* 프로그래밍에서 함수란? 하나의 기능을 수행하는 일련의 코드. 어떤 (중복되는) 기능을 구현하여 함수를 호출해 사용
함수 정의 하기
함수 이름, 매개변수, 반환 값을 선언하고 코드 구현
int add (int num1, int num2) {
int result;
result = num1 + num2;
return result;
}
add - 함수이름. 함수 기능과 관련해 명명
(int num1, int num2) - 매개변수. 함수 수행을 위해 필요한 변수
return - 함수 수행 결과를 반환하기 위한 예약어
처음의 int - 함수 반환형. 반환 값의 자료형을 나타냄. 반환 값이 없으면(기능만 하고 끝) void
public class FunctionTest {
public static void main(String[] agrs) {
int num1 = 10;
int num2 = 30; //변수 선언
int sum = addNum(num1, num2);
//addNum 호출, num1 num2 입력(함수에 넘김), int sum으로 반환값을 받음
System.out.println(sum);
}
public static int addNum(int n1, int n2) { //n1, n2는 함수에서 선언한 매개변수
int result = n1 + n2;
return result; //함수 선언. result를 return함
}
}
스택(stack)
함수가 호출될 때 사용하는 메모리. 기능 수행이 끝나면 자동으로 반환됨.
함수를 왜 쓸까?
코드를 효율적으로 구현하기 위해. 필요할 때 호출해서 사용. 유지보수 용이.
함수 구현은 하나의 기능만을 이름에 맞게 하는 것이 가장 적절함
클래스(static 코드)를 생성(인스턴스화)하면 인스턴스(dynamic memory), 객체(object)가 됨
클래스 생성하기
클래스형 변수이름 = new 생성자;
ex) Student studentA = new Student();
인스턴스와 힙(Heap) 메모리
하나의 클래스 코드로부터 여러 개의 인스턴스 생성
인스턴스는 힙(Heap)에 생성되며 각 인스턴스는 다른 메모리에 다른 값을 가짐(독립적)
가비지컬렉터로 메모리가 수거됨
| 용어 | 설명 |
| 객체 | 객체 지향 프로그램의 대상, 생성된 인스턴스 |
| 클래스 | 객체를 프로그래밍 하기 위해 코드로 만든 상태 |
| 인스턴스 | 클래스가 메모리에 생성된 상태 |
| 멤버 변수 | 클래스의 속성, 특성 |
| 메서드 | 멤버 변수를 이용하여 클래스의 기능을 구현 |
| 참조 변수 | 메모리에 생성된 인스턴스를 가리키는 변수 |
| 참조 값 | 생성된 인스턴스의 메모리 주소 값 |
생성자(constructor)
<modifidrs> <class_name> ([<argument_list>]) {
[<statements>]
}
인스턴스를 초기화 할 때의 명령어 집합
생성자의 이름은 클래스의 이름과 같으며, 메소드가 X. 상속되지 않으며 리턴 값은 없음
생성자가 없는 경우 컴파일러에서 디폴트 생성자를 추가해줌.
클래스에 매개변수를 받아 객체를 생성해 하나라도 생성자를 만들게 되면 디폴트 생성자는 제공되지 않음.
생성자 오버로드(constructor overload) - 하나의 클래스에 서로 다른 매개변수를 가진 여러 개의 생성자가 존재하는 경우
'TIL > JAVA' 카테고리의 다른 글
| [Java] 제곱과 루트 구하기 : Math.pow() / Math.sqrt() (0) | 2023.12.23 |
|---|---|
| [Java] 람다식(Lambda Expressions) - 1. 람다식이란, 람다식 기본 작성법 (0) | 2023.08.11 |
| Java 기초 - 반복문, 분기문 (0) | 2022.07.19 |
| Java 기초 - 조건문 (0) | 2022.06.20 |
| Java 기초 - 연산자(Operator) (0) | 2022.06.18 |