함수를 호출 했을때, 함수를 호출한 자리에 어떤 값이 남는지는 return타입에 의해 결정된다.

위 그림에서 합이라는 메서드가 호출 됬을 때, return type이 void이기 때문에 반환 값은 아무것도 없다. 여기서 주의해야할 점 은 print메소드에 의한 출력과 합 메소드의 반환값 사이에는 아무 관계가 없다는 것이다.
또한 매서드의 return type은 실제 리턴값의 타입, 그리고 메소드를 호출한 곳에서 메서드의 반환값을 담아줄 변수와 일치해야 한다.

Return Type : 메서드가 반환하는 값의 데이터 형식을 지정한다.
Parameter : 메서드에 전달되는 값을 담기위한 변수다.
Return Value : 메서드가 실행된 결과로 반환되는 값이다.
Return Statement : 리턴 벨류가 반환값이라면 리턴 Statement는 반환문이다. 메서드가 실행중일 때 특정 값을 반환하고 메서드를 종료한다.
선언부: 메서드나 변수등을 프로그램에서 사용 가능하도록 선언하는 부분이다.
구현부: 메서드의 실제 동작을 구현하는 부분이다.
코드를 짤 때 권장되는 방법은, 호출문을 먼저 쓰고, 호출할 메서드 구현을 하는 것이다. 미리 이런게 필요하겠다하고 만드는 것이 아니라 필요에 의해서 메소드를 구현해야 한다.

1 번에서는 greet함수에 "앨리스"라는 인자값을 넘겨서, 그 반환값을 문자열 타입에 저장하고 있다.
6 번에서는 greet 함수가 정의 되어있는데, 정적 메서드로 정의되어 있으며, 반환 타입은 문자열 형이고, 문자열 하나를 매개변수로 받는다. 수행하는 기능은 인삿말에 매개변수를 연결하여 반환하는 것이다.
2 번에서는 createPoint 메서드를 호출 중인데, 반환 타입은 참조형인 Point고 인자로 숫자 두개를 건내주고있다. Point는 2D 평면 상의 점을 나타내는 awt패키지의 클래스다.
5 번에서는 createPoint메서드를 정의하는데 매개변수로 int형 두개를 받고 있고, 정적 메서드 이며, 반환타입은 Point 이고, 실제로 Point 클래스를 객체화 하여 반환하고 있다.
3번에서는 firstNEventNumbers 메소드를 호출하는데 인자값으로 int형을 하나 건내고 있고, 그걸 int 배열형의 변수에 담고 있다. 담겨진 int 배열은 Array클래스의 정적 메소드인 toString을 호출하여 문자열로 변환해 출력하고 있다.
4번에서는 firstNEventNumbers메서드를 정의하는데 정적메소드로 int형 한개를 매개변수로 받고, int 배열을 반환하고 있다. 기능은 매개변수로 건내받은 n 값을 배열크기로 가지는 2의 배수 집합을 배열로 반환하는 것이다.
public 어떤 클래스에서든 접근 가능하다.
protected 같은 패키지 또는 상속받은 클래스에서만 접근 가능하다.
private 자기 자신만 접근 가능하다.
default 같은 패키지 내에서만 접근 가능하다.
도움을 받은 사이트: https://developer.mozilla.org/ko/docs/Glossary
[https://www.tutorialspoint.com/difference-between-abstraction-and-data-hiding](추상화와 정보은닉의 차이)
https://tcpschool.com/java/java_inheritance_concept
캡슐화 (Encapsulation):
--캡슐화는 데이터와 함수를 하나의 컴포넌트(예, 클래스)로 압축하고, 그 다음에 해당 컴포넌트에 대한 접근을 제어하여 객체에서 '블랙박스'를 만드는 것
상속(Inheritance):
-- 상속(inheritance)이란 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것
다형성(Polymorphism):
-- 다형성 (Polymorphism)은 여러 데이터 타입에 대한 하나의 인터페이스를 표현한 것이다.
흔히 역활(interface)과 구현이라는 말을 사용하는데, 하나의 역활에 구현체는 얼마든지 만들 수 있다.
추상화 (Abstraction):
-- 추상화는 내부 구현을 숨기고 복잡한 절차를 사용자에게 숨기는 과정.
따라서 추상화는 필요한 서비스나 시스템의 일부만 표시한다.
이것은 보통 '추상적' 클래스 개념을 사용하고 인터페이스를 구현함으로써 달성된다.
은닉화(hiding)
-- 외부자로부터 내부 데이터를 숨기는 작업을 말한다. 은닉화의 도움을 받으면 관련 없는 사람이 내부 데이터에 접근할 수 없게 됩니다. 은닉화 'private', 'protected'와 같은 접근 지정자를 사용하여 달성할 수 있습니다.
은닉화와 캡슐화의 가장 큰 차이는 추상화는 시스템의 복잡성을 숨기기 위해 사용되는 반면, 은닉화는 캡슐화를 위해 사용된다는 것이다.