선언 위치에 따른 변수의 종류
- 클래스 영역
- iv(Instance Variables): 인스턴스(객체)가 생성되었을 때
- cv(class Variables): 클래스가 메모리에 올라갈 때(객체생성 필요없음)
※iv와 cv의 차이점: 객체 생성의 필요성( iv: 객체생성 || cv: 객체생성 안해도됨)
- 메서드 영역(메서드의 시작'{'부터 메서드의 끝'}')
- lv(Local Variables): 변수 선언문이 수행되었을 때 생성
클래스 변수와 인스턴스 변수
- 클래스 변수(CV)
- static을 타입앞에 붙여야 한다.
- 공통 속성(모든 인스턴스가 공통으로 갖는 속상 값)
- 예시: 카드의 높이와 폭
- 인스턴스 변수(IV)
- 개별 속성
- 예시: 카드의 숫자와 무늬
class Card {
String kind; //무늬
int number; //숫자
static int width = 100; //폭
static int heigth = 250; //높이
}
- 객체 생성과 사용하기
Card c = new Card();
//iv사용하기(참조변수명.iv명 = 값)
c.kind = "HEART";
c.number = 5;
//cv사용하기(클래스명.CV명 = 값)
Card.width = 200; //(c.width 로 사용가능, 하지만 iv와 헷갈림_오해하기 쉬움)
Card.heigth = 250;
메서드란?
메서드 = 선언부 + 구현부
- 문장'{}'들을 묶어놓은 것
- 하나의 작업을 하는 코드를 {}안에 집어넣어 묶어준 뒤 이름을 붙여준 것
- 값(입력)을 받아서 처리하고, 결과를 반환(출력)
- 클래스 영역에만 정의 가능
public class Method {
// 반환타입 메서드이름(타입 변수명, 타입 변수명, ...) - 선언부
// {
// 메서드 호출시 수행될 코드 - 구현부
// }
public void printTest() {
System.out.println("메서드설명입니다!");
}
public void printTest2(String text) {
System.out.println("입력: " + text);
}
public int add(int x, int y) {//x와 y는 지역변수 lv
// int result = x + y; //result는 지역변수 lv
// return result;
return x + y;
}
public int multiply(int x, int y) {//x와 y는 지역변수 lv
// int result = x * y; //result는 지역변수 lv
// return result;
// 여기서 쓰이는 지역변수명은 add메서드의 변수명과 같다.
// 하지만 메서드안에서만 사용되고 메서드가 끝나면 같이 사라지기 때문에
// 다른 메서드와 변수명이 겹쳐도 상관없다.
return x * y;
}
public static void main(String[] args) {
//메서드의 호출
Method m = new Method();
m.printTest();//반환 값이 없다.
m.printTest2("반환값은 없지만 메서드 호출 시 입력한 값이 콘솔창에 나옵니다.");
int result = m.add(3, 5);
System.out.println("result = " + result);
}
}
메서드의 장점
- 코드의 중복을 줄일 수 있다.
- 코드의 관리가 쉽다.
- 코드를 재사용할 수 있다.
- 코드가 간결해서 이해하기 쉬워진다.
메서드의 작성
- 반복적으로 수행되는 여러 문장을 메서드로 작성
- 하나의 메서드는 한 가지 기능만 수행하도록 작성
메서드의 호출
메서드이름(값1, 값2,...없으면 안써줘도 됨); //메서드를 호출하는 방법
m.printTest();//반환 값이 없다. (void prinTest()를 호출
int result = m.add(3, 5); //매개변수로 3, 5를 보냄, 반환 받은 작업결과를 result에 저장.
//add메서드
public int add(int x, int y) {//x와 y는 지역변수 lv
// int result = x + y; //result는 지역변수 lv
// return result;
return x + y;
}
'Java > 객체지향개념' 카테고리의 다른 글
객체 지향 언어, 객체 지향 프로그래밍, 클래스와 객체(+객체의 배열) (0) | 2022.03.06 |
---|
댓글