일단 이제까지 클래스, 객체는 비교적 많이 들었기 때문에 음... 그래... 하고 넘어갈 수 있었는데
필드????? 메서드?????
개념이 잡힐듯 말듯.. 될듯 말듯
답답하다
일단 메서드는 자바스크립트로 보면 DIV와 비슷한 느낌
필드는... 모든 변수를 총칭하는?
# 클래스(Class) 와 객체 (Object)
- 객체를 이해할 수 있다.
- 클래스의 개념과 구성요소, 기본 문법을 설명할 수 있다.
- 객체의 두가지 구성요소인 속성과 기능을 이해할 수 있다.
- 클래스와 객체의 차이를 알고, 관계를 정의할 수 있다.
# 필드(Field)와 메서드 (Method)
- 객체의 속성을 정의하는 필드를 이해하고, 세 가지 종류의 변수를 구분할 수 있다.
- 각각의 변수가 저장되는 위치와 그 차이를 설명할 수 있다.
- static 키워드를 설명할 수 있다.
- 객체의 기능을 정의하는 메서드를 이해하고, 메서드의 구성요소와 호출에 대해 설명할 수 있다.
- 메서드 오버로딩을 이해하고 그 장점을 설명할 수 있다.
1. 객체 (Object)
: 눈으로 보이고 만지고 인지 할 수 있는 모든 사물
: 실재 하는 어떤 대상
→ 클래스에 정의되고 설계된 내용 대로 생성됨
→ 모든 인스턴스를 포괄
→ 객체가 메모리로 올라가 있으면 '인스턴스'
2. 클래스 (Class)
: 객체를 정의한 설계도 or 틀
→ 객체생성에 사용
→ 객체를 생성하는데에 사용되는 기준?
클래스명 참조_변수명 = new 생성자();
Class test = new class();
// 클래스생성 변수명 = 메모리에저장 클래스주소(안에있는 객체를);
3. 인스턴스 (instance)
: 클래스를 통해 생성된 객체
: 해당 객체가 어떤 클래스로부터 생성된것인지가 강조됨
→ 소회의실 , 단톡방 , 인던
→ 한 번 사용하고 사라지는?
→ 잠시 저장되는 저장소?
*인스턴스화 (instantiate) : 클래스로부터 객체를 만드는 과정
1. 필드 (Field)
: 클래스에 포함된 변수 (객체의 속성의 정의할 때 사용)
→ static 키워드가 함께 선언된 것 (클래스 변수)
→ static 키워드가 선언되지 않은것 (인스턴스 변수)
→ 메서드 내에 포함된 모든 변수 (지역 변수)
// 자바에서 클래스의 영역은 문서의 영역
// 용도와 상황, 위치 등에 따라 변수의 이름이 바뀜
class Example { // 클래스 영역
int instanceVariable; // 인스턴스 변수 → new 생성자() / 생성시점의 차이 (사용 가능 시점의 차이)
static int classVariable; // 클래스 변수, static(정적인)변수/공유변수 → 생성 공간의 차이 (용도의 차이)
void method() {
int localVariable; // 지역 변수, 가장 가까운{}블록 안에서만 유효
}
}
- 세가지 변수
: 클래스 변수
→ 공통된 저장공간을 공유
→ 한 클래스로부터 생성되는 모든 인스턴스가 특정한 값을 공유해야 하는 경우에 static 키워드 사용
*
static은 모든 클래스&인스턴스 변수에 영향을 미침
instance는 지정한 인스턴스 변수에만 영향을 미침
2. 메서드 (Method)
: 특정 작업을 수행하는 일련의 명령문들의 집합
- 메서드 시그니처
자바제어자 반환타입 메서드명 (매개 변수)
public static int add (int x, int y)
- 메서드 바디
public static int add(int x, int y) { // 메서드 시그니처
int result = x + y; // 메서드 바디
return result;
}
반환타입 : static int
매개변수 : int x, int y
만약 메서드의 반환타입이 void가 아닌 경우에는 메서드 바디({}) 안에 반드시 return 문이 존재해야 합니다. 리턴문은 작업을 수행한 결과값을 호출한 메서드로 전달합니다. 여기서 결과값은 반드시 반환타입과 일치하거나 적어도 자동 형변환이 가능한 것이어야 합니다.
void printHello() { // 반환타입이 void인 메서드
System.out.println("hello!");
}
반환타입
: void 매개변수 : 없음void = 반환 값이 없는 메서드
void가 있으면 어떤 문제를 해결하기 위한 로직만 돌아가고 그 결과는 다시 돌려주지 않음(return안함)void가 없으면 문제를 해결하고 그 결과값을 보여줌 (return함)
int getNumSeven() { // 매개변수가 없는 메서드
return 7;
}
반환타입 : int
매개변수 : 없음
매개변수가 없어서 해당 메서드가 호출되면 7을 반환
Double multiply(int x, double y) { // 매개변수가 있는 메서드
double result = x * y;
return result;
}
반환타입 : Double
매개변수 : int x, double y
int와 double을 연산하면 더 큰 타입인 double로 자동 형 변환이 이루어짐
- 메서드 호출
: 메서드도 클래스의 멤버
: 클래스 외부에서 메서드를 사용하기 위해서는 인스턴스를 생성해야 함
: . (포인트 연산자) 사용
메서드이름(매개변수1, 매개변수2, ...); // 메서드 호출방법. 매개 변수가 없을 수도 있음.
printHello(); // 위의 코드 예제 호출
getNumSeven();
multiply(4, 4.0);
(int x, double y)
(괄호 안에 넣는 값 : 인자)
(인자의 개수와 순서는 메서드를 만들 때 선언된 매개변수와 일치해야 함)
//출력값
hello!
7
16.0
- 메서드 오버로딩 (Method Overloading)
: 하나의 클래스 안에 같은 이름의 메서드를 여러개 정의 하는 것
: 장점
→ 하나의 메서드로 여러 경우의수를 해결할 수 있음
: 같은 메서드명을 사용한다고 해서 오버로딩이 되는 것은 아님
→ 같은 이름의 메서드 명 + 매개변수의 개수 or 타입이 다르게 정의 = 오버로딩
→ 반환타입이 다른것은 오버로딩에 영향을 주지 않음
static이 있는것과 없는것을 이해하는게 힘들었음
인스턴스변수 에서 클래스변수 static과 인스턴스변수를 호출하는것은 가능하지만,
클래스변수에서 인스턴스변수를 호출하려면 객체를 생성해야함
void 유무?
void가 있으면 어떤 문제를 해결하기 위한 로직만 돌아가고 그 결과는 다시 돌려주지 않음(return안함)
void가 없으면 문제를 해결하고 그 결과값을 보여줌 (return함)
# 생성자 (Constructor)
# 내부 클래스 (Inner Class)
↓ 이전 글 ↓
↓ 코트스테이츠 부트캠프 관련 글 한번에 보기 ↓
[코드스테이츠] 04_25_TIL : 객체지향 _ 상속과 캡슐화 (0) | 2023.04.25 |
---|---|
[코드스테이츠] 04_24_TIL : 객체지향 _ 생성자와 이너클래스 (0) | 2023.04.24 |
[코드스테이츠] 04_20_TIL : JAVA 다섯번째 _ 배열 (1) | 2023.04.20 |
[코드스테이츠] 04_19_TIL : JAVA 세번째 _ 반복문 (0) | 2023.04.20 |
[코드스테이츠] 04_18_TIL : JAVA 두번째 _ 연산자, 조건문 (0) | 2023.04.18 |