본문 바로가기
개발공부/Java

[Java] 02. 객체의 속성은 멤버변수로, 객체의 기능은 메서드로 구현한다.(feat 함수와 메서드 개념)

by sangyeon 2021. 11. 17.
728x90

1. 함수란? 

- 하나의 기능을 수행하는 일련의 코드

- 구현된(정의된) 함수는 호출하여 사용하고 호출된 함수는 기능이 끝나면 제어가 반환됨

- 함수로 구현된 하나의 기능은 여러 곳에서 동일한 방식으로 호출되어 사용될 수 있음

그림 1. 함수 예

2. 함수 구현하기 예제

public class FunctionTest {

public static int addNum(int n1, int n2) {
int result;
result = n1 + n2;
return result;
}

public static void sayHello(String greeting) {
System.out.println(greeting);
}

public static int calcSum() {

int sum = 0;
int i;

for(i = 0; i<=100; i++) {
sum += i;
}

return sum;
}

public static void main(String[] args) {

int num1 = 10;
int num2 = 20;

int sum = addNum(n1, n2);

sayHello("안녕하세요");
int num = calcSum();

System.out.println(sum);
System.out.println(num);
}
}

위의 예제에서 총 3가지 타입의 함수가 존재한다.

- addNum() : int형 매개변수 2개를 입력받아 두 수의 합을 리턴해주는 함수

- sayHello() : String을 매개변수로 입력받아 sysout으로 출력해주는 함수

- calcSum() : 1~100까지 수의 합을 리턴 받는 함수

 

3. 함수 호출과 스택 메모리

- 스택 : 함수가 호출 될 때 지역 변수들이 사용하는 메모리

- 함수의 수행이 끝나면 자동으로 반환되는 메모리

- 아래 메모리 생성 방향은 메서드에서도 동일하게 적용 된다.

그림 2. 메모리 생성 과정

 

4. 메서드

- 객체의 기능을 구현하기 위해 클래스 내부에 구현되는 함수

- 멤버 함수라고도 부른다.

- 메서드를 구현함으로써 객체의 기능이 구현 됨

- 메서드의 이름은 그 객체를 사용하는 객체(클라이언트)에 맞게 짓는 것이 좋다.

예) getStudentName()

 

 

5. 학생 클래스를 정의하고 이를 사용해보자. (객체 생성 예제)

> 학생 클래스의 속성을 멤버 변수로 선언하고 메서드를 구현 한다.

 

5-1. 학생 클래스 정의

package ch04;

public class Student {

public int studentID;
public String studentName;
public String address;

public void showStudentInfo() {
System.out.println(studentID + "학번 학생의 이름은 " + studentName + "이고, 주소는 " + address + "입니다.");
}

public String getStudentName() {
return studentName;
}

public void setStudentName(String name) {
studentName = name;
}
}

> studentID, studentName, address는 멤버변수라 말하고, 

> showStudentInfo(), getStudentName(), setStudentName()은 멤버 함수 또는 멤버라 부른다.

 

5-2. 학생 클래스를 사용하는 StudentTest라는 main클래스 정의

package ch04;

public class StudentTest {

public static void main(String[] args) {

Student student_1 = new Student();

student_1.studentID = 12345;
student_1.setStudentName("이순신");
student_1.address = "서울";


student_1.showStudentInfo();

Student student_2 = new Student();
student_2.studentID = 54321;
student_2.setStudentName("김유신");
student_2.address = "경주";

student_2.showStudentInfo();
}

}

> 학생 객체를 생성하여 해당 객체의 변수의 값을 입력하고 메서드로 호출하여 값을 뽑아오는 일련의 과정을 보여준다.

 

<< 실행화면 >>

12345학번 학생의 이름은 이순신이고, 주소는 서울입니다.
54321학번 학생의 이름은 김유신이고, 주소는 경주입니다.

 

728x90