본문 바로가기
Programming Language/Java

[자바의 정석] ch6-11 ~ ch6-21 객체지향 개념 정리 (선언위치, 변수종류, 메서드, return문)

by Baest 2021. 7. 14.

ch6-11 선언위치에 따른 변수의 종류

 

영역은 크게 두 가지로 나뉨

1. 클래스 영역 - iv, cv(static+iv)

2. 메서드 영역 - lv

변수의 종류 선언위치 생성시기
클래스 변수 (class variable) 클래스 영역 클래스가 메모리에 올라갈 때
인스턴스 변수(instance variable) 클래스 영역 인스턴스가 생성되었을 때
지역변수(local variable) 클래스 영역 이외의 영역
(메서드 생성자, 초기화 블럭 내부)
변수 선언문이 수행되었을 때

*클래스변수는 객체 생성이 필요 없음. 아무때나 사용 가능

*인스턴스 변수는 객체 생성 필요. 객체 생성을 해야 사용 가능

*지역변수는 메서드 종료 시 자동제거됨

*프로그래밍 관점에서 객체는 iv(인스턴스 변수) 를 묶어 놓은 것

 

 

ch6-12 클래스 변수와 인스턴스 변수

 

iv 인스턴스 변수(개별 속성)

cv 클래스 변수(공통 속성) - static 붙임

 

1
2
3
4
5
6
7
8
9
Class Card {
 
    String kind; //무늬
    int number; //숫자
 
    static int width = 100; //폭
    static int height = 250; //높이
 
}
cs

 

 

[아래와 같이 사용하면 되는데 클래스 변수의 경우 클래스명 전체를 사용해 주는 것을 권장 (c.width 로 해도 작동하나 권장안함. iv로 오해할 수 있음)]

Card c = new Card();

c.kind = "HEART";

c.number = 5;

c.width = 200;     -> Card.width = 200;

c.height = 300;    -> Card.height = 300;

 

 

ch6-13 클래스 변수와 인스턴스 변수 - 예제

- 예제 설명

 

 

ch6-14 메서드란?

1. 문장들을 묶어놓은 것

- 작업단위로 문장들을 묶어서 이름 붙인 것

2. 값(입력)을 받아서 처리하고, 결과를 반환(출력)

 

===================================================================

메서드 = 선언부 + 구현부

->

선언부: 반환타입 메서드이름 (타입 변수명, 타입변수명, ...)

{

     구현부: 메서드 호출 시 수행될 코드

}

ex ->

int add(int a, int b)

{

     int result = a + b;

     return result; //호출한 메서드로 결과 반환 (반환 값이 없을 경우 반환타입을 void 로 적어줌)

}

===================================================================

 

[메서드의 장점] : 중복코드 제거, 관리 용이, 재사용 가능

- 코드의 중복 줄일 수 있음

- 코드의 관리 쉬움

- 코드 재사용 가능

- 코드가 간결해서 이해 쉬움

 

[메서드의 작성]

- 반복적으로 수행되는 여러 문장을 메서드로 작성

- 하나의 메서드는 한 가지 가능만 수행하도록 작성

 

 

ch6-15 메서드의 구현부

 

지역변수(lv) : 메서드 내에 선언된 변수 (메서드 내에서만 쓰기 때문에 이름 겹쳐도 상관 없음)

 

 

ch6-16

 

 

ch6-17 메서드의 호출 (메서드 call) 

 

메서드이름(값1, 값2, ...); //메서드를 호출하는 방법

*괄호 안에 작업에 필요한 값들 넣어줌 

 

print99danAll(); //void print00danAll()을 호출

int result = add(3, 5); //int add(int x, int y)를 호출하고, 결과를 result에 저장 x와 y는 중간역할을 한다고 하여 매개변수(parameter)라고 부름

-> result는 작업 결과를 저장한 변수

 

*메서드는 클래스 영역에만 정의 가능

 

 

ch6-18 메서드의 실행흐름

 

ch6-19

 

 

ch6-20 return문

- 실행중인 메서드를 종료하고 호출한 곳으로 되돌아간다.

- 반환타입이 void가 아닌 경우, 반드시 return문 필요

*참과 거짓일 때 모두 return문 필요

 

 

ch6-21 반환값

- 반환값: return 옆에 써주는 값 (return result;  에서 result 가 반환값)

- 반환 타입이 void가 아닐 때 반환값의 타입이 일치하거나 자동형변환(ex char,byte,short) 가능해야함

 

 

 

============================================================================https://youtu.be/qA0D-nAcAvQ