클래스 : 객체생성을 위한 설명서 또는 설계도와 같은 역할
클래스의 종류
1. main이 들어있는 실행용클래스
2. 다른 클래스에서 사용하기 위한 참조클래스
클래스 구성요소
1. 변수(멤버변수, 필드, 속성), 객체
2. 함수(메서드, 기능)
3. 생성자


메서드(함수) : 작업을 수행하기 위한 명령문의 집합으로 코드의 반복사용을 줄이기 위해 사용한다.
자주 사용하는 코드를 메서드(함수)로 작성해두고 필요시 호출.
함수기능이 정의된 선언부와 호출하는 부분인 호출부로 나뉜다.
함수 선언은 함수 밖에서, 함수 호출은 함수 안(main)에서 해야한다.
메서드(함수) 선언 기본형 (main밖)
접근제한자 반환형 함수명 (매개변수1, 매개변수2...) {
함수에 들어갈 명령;
return 반환값;
}
접근제한자 : 소스코드에 접근할 수 있는 범위 설정
*public : 모든 접근 허용
*private : 현재 클래스의 객체만 사용 허가
protected : 상속관계의 객체만 허가 default : 같은 패키지 내의 객체만 사용 허가
반환형 : 메서드가 처음부터 끝까지 수행한 뒤 반환(return)해야할 값이 있을 때 기입
int 등 기본자료형 뿐만 아니라 String 객체도 반환가능반환값의 자료형과 일치해야함
메서드를 호출하면 선언 블록안의 명령을 실행, 결과를 반환하는데 어떤 타입을 반환할지 미리 정하고 반환할 값이 없으면 void를 사용한다.
선언부에서 void+sysout을 쓰면 호출부에 바로 참조변수.함수명();
선언부에서 int 등+return을 쓰면 호출부에 참조변수.함수명();을 받을 변수와 그 변수를 담을 sysout필요.
함수명 : 소문자로 시작
매개변수(파라미터) : 특정 값을 외부에서 받아 함수 내에서 사용할 수 있는 변수 (함수를 호출할 때 값을 보냄)
메서드(함수) 호출 기본형 (main안)
메서드선언한클래스명 참조변수 = new 메서드선언한클래스명();
참조변수.함수명();
//함수의 종류 (경우의 수는 4가지)
//1. input(매개변수를 통해 들어오는 수)이 있고 output(return)이 있는경우
//2. input(매개변수를 통해 들어오는 수)이 있고 output(return)이 없는경우
//3. input(매개변수를 통해 들어오는 수)이 없고 output(return)이 있는경우
//3. input(매개변수를 통해 들어오는 수)이 없고 output(return)이 없는경우

su가 101이 된 이후 다시 su를 출력하면 기존 100으로 돌아가있다. 왜일까?
메서드(함수) 출력이 끝나면 매개변수가 소멸되기 때문이다!!
만약 그대로 101로 남게하고 싶다면 test클래스에서 sysout이 아니라 return으로 받아서 main클래스에서 변수로받고 변수를 출력하면 가능

값을 반환해야하므로 return으로 받고 n변수에 담아 n을 출력한다.

값을 반환해야하므로 return으로 받고 res변수에 담아 res를 출력하거나
void+sysout으로 쓸 수도 있다. 두가지방법 가능

값을 돌려줄필요 없으니 void

값을 반환해야하므로 return으로 받고 total변수에 담아 total을 출력한다.

값을 돌려줄필요 없으니 void

값을 반환해야하므로 return으로 받고 sum변수에 담아 sum을 출력하거나
void+sysout으로 쓸 수도 있다. 두가지방법 가능
setter와 getter : private 으로 만들어진 변수 값을 변경, 조회 시 사용
setter는 객체하나를 변수로 요구함



메서드(함수) 안에서만큼은 지역변수가 우선됨.
값을 바깥까지 전달해야되기 때문에
메서드 안에있는 매개변수 name이 아니라 현재 Person클래스의 name임을 명시해주기 위해 this 사용.
this를 쓰지 않으면 지역변수로 인식해서 getName까지 값 전달할 수 없음.
즉 this는 필드와 매개변수의 구별을 위함.


'JAVA' 카테고리의 다른 글
[JAVA] 생성자, 생성자 오버로딩 (0) | 2023.08.24 |
---|---|
[JAVA] 메서드 오버로딩 (0) | 2023.08.23 |
[JAVA] JAVA API 클래스 (Math 클래스, Calendar 클래스, Wrapper 클래스) (0) | 2023.08.22 |
[JAVA] JAVA API 클래스 (String 클래스, StringBuilder 클래스) (0) | 2023.08.21 |
[JAVA] 배열 (0) | 2023.08.19 |