- 생활코딩 Java1 Method 강의 완강 후 적는 정리 글.
- 강의 url : https://opentutorials.org/course/4024
JAVA method - 1. 수업소개
- 메소드 = 함수 = 복잡한 걸 정리해서 다시 단순하게 만드는 정리정돈 도구.
- 메소드 = 마법의 수납상자
- 아무리 복잡한 것도 그걸 모아서 거기다가 이름을 붙일 수 있으면 정리가 쉬워진다! (마치 서랍처럼...)
- 연관된 코드를 모아서 그룹핑하고, 이름을 붙이면 그게 함수. (=메소드)
==> 메소드를 이용하면 복잡한 코드를 깔끔하게 정리할 수 있음.
==> 이미 만들어놓은 메소드 쓰면 되니까 이미 있는 코드는 다시 새로 작성할 필요가 없어짐 (재사용 가능)
JAVA method - 2. 이미 익숙한 메소드
- 우리는 이미 메소드를 써왔다!!
ex) System.out.println(Math.floor(1.1)); : Math라는 클래스 안에 소속되어 있는 floor 메소드
ex) System.out.println("Hello World!"); : println도 모니터에 출력해주는 '메소드'!
- 나는 메소드의 생산자이자 소비자였음.
- 이제는 나의 메소드를 만들어보자.
JAVA method - 3. 메소드의 기본 형식
(▼ 메소드 사용 전) → 반복 多 재사용 不可
- 1억번씩 써야 한다고 치면 매우 비효율적...
(▼ 메소드 사용 후) → 반복↓재사용 可 → 효율적
<리팩토링>
- 이클립스 > 우클릭 > Refactor > Extract Method
- 알아서 메소드를 만들어준다
JAVA method - 4. 메소드의 입력
메소드의 형식)
public static void 메소드이름 (매개변수=parameter){
/... (메소드내)
}
메소드이름(인자=argument);
JAVA method - 5. 메소드의 출력
# (메소드의) return값 = (그 메소드의) 실행결과!
# (메소드의) return값:
1. 해당 메소드의 실행결과
2. 해당 메소드를 종료시킴 (리턴값 뒤에 구문은 실행X)
public static String a(){
/...
return a;
}
→ 메소드 a()의 실행결과는 "a"가 된다.
public static int one(){
return 1;
}
→ 메소드 one()의 실행결과는 int 1이 된다.
public static void main(){
/...
}
→ void : return 값이 없는 메소드!
JAVA method - 6. 메소드의 활용
- 메소드 사용 → 코드 가독성↑, 재사용 可, 유지보수가 용이해짐
JAVA method - 7. 수업을 마치며
<공부한 것>
- 메소드 : 서로 연관된 명령을 그룹핑해서 이름 붙인 것
<앞으로 공부하게 될 것들>
- 객체지향로그래밍 (OOP, Object Oriented Programming)
- 클래스 : 서로 연관된 메소드와 변수를 그룹핑해서 이름 붙인 것
- 인스턴스 : 클래스를 복제해서, 서로 다른 내부적인 상태를 갖고 있는 복제본들
- 객체 : 클래스+인스턴스 ==> 객체지향
JAVA method - 8. 부록 - access level modifiers
- public이 대체 뭐냐? : 접근지정어
- 접근지정어에는 public, protected, default, private 이 올 수 있다. (default는 생략 가능)
- 메소드가 많아지면, 서로 연관된 메소드를 그룹핑하기 위해 클래스를 만든다.
같은 클래스 내에서 사용 가능 |
같은 패키지 내에서 사용 가능 |
다른 패키지 내에서 사용 가능 |
어디든 상관없이 접근 가능 |
|
private | O | X | X | X |
default | O | O | X | X |
protected | O | O |
O (단, 상속받았을 때) |
X |
public | O | O |
O |
O |
JAVA method - 9. 부록 - static ★
- static 붙은 애 : 클래스 메소드 (=static 메소드)
- static 안 붙은 애 : 인스턴스 메소드
- 왜 클래스를 쓰는지 엄청 이해 잘 가게 설명해줘서 좋았다.
(https://youtu.be/tcxf9epFD_U?list=PLuHgQVnccGMDkdt3N9tT0aZPZx5-Ri2jo&t=224)
- 클래스를 '(연관된 메소드+변수) 정리정돈의 도구'로 표현해서 이해가 쏙쏙 갔다.
- 인스턴스가 왜 등장했는지도 너무 잘 설명해서... 이해가 쏙쏙 갔다. 역시 생활코딩이 최고.
(▼ 클래스 사용 전) : 비슷한 기능을 하는 복수개의 메소드가 따로 따로 있음
(▼ 클래스 사용 후1 - 클래스 메서드) : 비슷한 기능을 하는 복수개의 메소드를 하나의 클래스로 묶어서 관리
- 메소드 a는 클래스인 Print의 소속으로 실행되고 있음
메소드가 클래스의 소속일 때는 → static을 붙여줘야
- 이렇게 클래스로 만드는 것도 좋지만, 만약 -/a/a, -/b/b, */a/a, */b/b 출력을 10억번씩 반복해야 한다면?
(▼ 클래스 사용 후2 - 인스턴스 메서드)
- new Print(); : Print 클래스를 복제
- Print 클래스를 복제해서, 분신 t1 에 담는다
- 이 분신(t1)을 '인스턴스'라고 함
- 메소드 a는 t1이라는 인스턴스의 소속으로써 실행되고 있음
- 메소드가 인스턴스의 소속일 때는 → static을 빼줘야
<인스턴스 메서드 vs 클래스 메서드>
1. 인스턴스 메서드
- 메서드 앞에 static 無
- 반드시 객체를 생성해야만(new) 호출 가능
- 인스턴스 변수와 관련된 작업을 하는 메서드
- 즉, 메서드 작업을 수행하는데 인스턴스 변수를 필요로 하는 메서드
2. 클래스 메서드
- 메서드 앞에 static 有
- 객체를 생성하지 않고도 호출 가능. ==> 호출형식 : '클래스이름.메서드이름(매개변수)'
- 인스턴스와 관계 없는 (인스턴스 변수나 인스턴스 메서드를 사용하지 않는) 메서드
<메서드 설계 시 고려사항>
1. 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통으로 사용하는 것에 static을 붙인다.
2. 클래스 변수(static 변수)는 인스턴스를 생성하지 않아도 사용할 수 있다.
3. 클래스 메서드(static 메서드)는 인스턴스 변수를 사용할 수 없다.
4. 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 부이는 것을 고려한다.
* 클래스의 멤버변수 중 모든 인스턴스에 공통된 값을 유지해야 하는 것이 있으면 static을 붙여준다.
* 작성한 메서드 중, 인스턴스 변수/인스턴스 메서드를 사용하지 않는 메서드에 static 붙이는 것을 고려한다.
'Programming > Back-end(Java, JSP)' 카테고리의 다른 글
[Java] Annotation (0) | 2020.04.18 |
---|---|
[JSP] JSTL 용법 (0) | 2020.04.05 |
[JSP] EL(Expression Language) 용법, 연산자 (0) | 2020.04.05 |
VO(DTO), DAO, Service 용어 설명 (0) | 2020.03.18 |
[JSP] 내장객체 (기본객체, Implicit Objects) (0) | 2020.03.12 |
[Java] Swing 기초개념 (0) | 2020.01.09 |
[Java] 개발환경 구축 - 2) 이클립스 설치 (0) | 2019.12.02 |
[Java] 개발환경 구축 - 1) 자바 컴파일러 설치 (0) | 2019.12.02 |