오늘은 함수와 메서드에 대해 알아보았다.
파이썬을 배울 때는 함수라는 표현을 많이 썼는데, 자바에서는 메서드라는 표현을 많이 쓰는 것 같다.
함수란 하나의 기능을 수행하는 일련의 코드로서 호출하여 사용하고 기능이 수행된 후 값을 반환할 수 있다.
우리가 수학시간에 배웠던 함수를 떠올려보면 쉽다.
오랜만에 보는 함수 그림
입력값을 넣으면 알아서 연산을 하고 출력값을 내준다.
메서드라는 것은 객체의 기능을 구현하기 위해 클래스 내부에 구현되는 함수라고 한다.
메서드를 구현함으로써 객체의 기능이 구현된다.
자바의 경우 함수를 클래스 내부에서 만들어야 하기 때문에 함수라는 표현보다는 메서드라는 표현을 쓰게 되는것 같다.
메서드 구현 시 스택의 처리과정을 그림판으로 그려가면서 설명해주셨다.
<추가 공부>
메소드 (컴퓨터 프로그래밍)
출처: https://ko.wikipedia.org/wiki/%EB%A9%94%EC%86%8C%EB%93%9C
클래스 기반 언어에서 클래스 내부에 정의되어 있다. 메소드는 프로그램이 실행되고있을때 클래스에서 생성된 인스턴스와 관련된 동작을 정의한다. 메소드는 런타임 중에 클래스 인스턴스 (또는 클래스 객체)에 저장되어 있는 데이터에 접근할 수 있는 특수 속성을 가지고 있다.[1] 바인딩은 클래스와 메소드 간의 연관관계를 말합니다. 클래스와 관련된 메소드는 클래스에 바인딩 할 수 있다. 메소드는 컴파일 타임 (정적 바인딩) 또는 런타임 (동적 바인딩)에 클래스에 바인딩 할 수 있다.[2]
예제
아래의 자바 코드는 사각형의 넓이를 계산하는 "rectangle" 메소드를 정의한 것이다.
public class Main { int rectangle(int h, int w) { return h*w; } }
아래의 C++ 코드는 입력과 출력 메소드를 정의한 것이다.
#include <iostream> #include <string> #include <array> struct goods { std::string name; float price; static int percent; void input() { std::cout << "Good's name: "; std::cin >> name; std::cout << "Price: "; std::cin >> price; } void display() { std::cout << "\n" << name; std::cout << ", Final price with tax: "; std::cout << static_cast<long>(price * (1.0 + goods::percent * 0.01)); std::cout << "\n"; } }; int goods::percent = 20; int main() { std::array<goods, 3> a; for (auto&& i : a) { i.input(); } for (auto&& i : a) { i.display(); } }
추상 메소드
추상 메소드는 구현 없이 선언만 되어 있는 메소드를 말한다. 서브 클래스는 반드시 메소드의 구현을 포함하여야 한다. 추상 메소드는 언어에서 인터페이스를 명시하기 위해 사용된다.
예제
아래의 자바 코드는 확장이 필요한 추상 클래스를 정의한 것이다.
abstract class Main{ abstract int rectangle(int h, int w); // abstract method signature }
위의 "Main" 클래스를 상속하는 클래스이다.
public class Main2 extends Main{ @Override int rectangle(int h, int w) { return h*w; } }
상태변이 메소드
상태변이 메소드는 자신을 호출한 객체의 상태를 변화시킬 수 있는 메소드를 말한다.
예제
struct calculator { static int value; void increase() { value = value + 1; } };
접근 메소드
접근 메소드는 보통 단순히 객체의 상태에 접근할 수 있는 메소드를 말한다.
예제
struct calculator { static int value; void printValue() { printf("%d\n", value); } };
정적 메소드
정적 메소드는 클래스의 인스턴스 없이 데이터에 접근할 수 있는 권한을 가진다. 어떤 언어에서는 static 키워드를 선언부에 적음으로써 다른 것들과 구분 짓는다.
'언어공부 > JAVA&SPRING' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 9회차 미션 (0) | 2020.08.18 |
---|---|
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 8회차 미션 (0) | 2020.08.17 |
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 6회차 미션 (0) | 2020.08.15 |
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 5회차 미션 (0) | 2020.08.14 |
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 4회차 미션 (0) | 2020.08.13 |
댓글