Day 11
사실 어제 조금 멘붕이 왔었다. 아무래도 이론 파트이다보니 이해도 잘 안 되고 설명도 와닿지 않다보니 학원에 등록하기 전 처럼 안 좋은 생각이 또 조금씩 스멀스멀 올라오는게 느껴졌다. 그래도 마음을 다잡고 새벽 5시까지 책으로 복습을 하고 잤더니 (물론 중간에 놀기도 했지만) 이해도도 조금 높아지고 무엇보다 불안한 마음이 해소되는 느낌을 받았다! 아니나 다를까 오늘 수업시간에 멘탈을 꽉 잡아야한다고 강사님께서 말씀하셨는데, 마음이 흔들릴 때는 걱정은 내려놓고 공부하는게 최선인 것 같다. 걱정은 하면 할수록 늘기 마련이니까! 오늘은 어제에 이어서 메소드 파트를 마무리했다. 뒤이어 인스턴스 멤버와 정적 멤버도 도입부로 들어갔는데, 수업시간이 30분 남짓 밖에 남지 않아서 내일 본격적으로 마무리하기로 했다. 그리고 수업 중간에 책에서 잠깐 벗어나 '자바빈즈(Javabeans)' 라는 개념을 꽤 오랜 시간을 투자해서 설명하셨다. 이 부분도 나중에 빼먹지 말고 꼭 복습해야한다.
메소드
객체의 동작 (기능)
호출해서 실행하는 중괄호 블록{}
메소드 호출하면 중괄호 블록 안의 모든 코드들이 일괄 실행 {}
리턴타입 메소드이름 ([매개변수선언, ...]) { )
실행할코드 ) ----> 메소드 실행 블럭
} )
메소드 리턴 타입
메소드 실행된 후 리턴하는 값의 타입
메소드는 리턴값이 있을수도 없을수도 있다
메소드가 호출자에게 돌려줄 값이 없다면 리턴타입은 'void'
객체의 '메소드 호출' ---> 객체와 객체간의 상호작용(interaction)의 수단
메소드 이름은 자바 식별자 규칙에 맞게 작성
메소드 매개변수 선언
매개변수는 메소드 실행할 때 필요한 데이터를 외부에서 받기 위해 사용 (매개=중개)
메소드는 매개변수 필요 없을 수도 잇다
메소드선언
void powerOn { ... } -----> 매개변수필요x
double divide(int x, int y) { ... } -----> 매개변수필요o
메소드 호출
powerOn();
double result = divide( 10, 20 );
리턴문
메소드 실행을 중지하고 리턴값을 반환함
리턴값이 있는 메소드
리턴문 사용해 리턴값을 지정해야한다
return result;
리턴값이 없는 메소드
메소드 실행을 강제 종료
return;
메소드 호출
클래스 내부 : 메소드 이름으로 호출 (but, this.~~ 붙인다) (혼동방지)
클래스 외부 : 객체 생성후 참조변수를 이용해 호출
메소드 오버로딩
클래스 내에 같은 메소드를 여러개 선언하는것
하나의 메소드 이름으로 다양한 매개값 받기위해 메소드 오버로딩
*오버로딩의 조건 : 매개변수의 타입, 갯수, 순서가 달라야!
인스턴스 멤버와 this
인스턴스멤버
객체(인스턴스)마다 가지고 있는 필드와 메소드
이들을 각각 인스턴스 필드 인스턴스 메소드라고 부름
인스턴스 멤버는 객체 소속된 멤버이기 때문에 객체없이 사용불가
Wrapper type
자바언어에서는 기본타입마다 각 타입에 대응되는 참조타입 (즉, 클래스)를 가지고 있다
여러가지 이유로 기본타입보다는 참조타입으로 사용해야하는 경우가 많기 때문이다
각 기본타입에 대응되는 참조타입을 알아보자
*기본타입 *참조타입 (Wrapper type)
-----------------------------------------------------
byte Byte
char Character
short Short
int Integer
long Long
-----------------------------------------------------
float Float
double Double
-----------------------------------------------------
boolean Boolean
-----------------------------------------------------
*void Void
---------------------------------------------------------------------------------------------------
자바빈즈(javabeans) 클래스
**자바 클래스 중에 아래의 조건을 지키는 클래스를 "자바빈즈(javabeans)" 클래스라고 한다
다음은 자바빈즈(JavaBeans) 클래스 규약이다.
1) private 접근제한자로 필드를 선언한다. (필수)
2) 각 필드에 대해서,
getter 메소드와 setter 메소드를 갖는다. (필수)
3) 기본 생성자가 반드시 존재해야 된다. (필수)
4) implements Serializable (선택)
*getter 메소드
각 필드의 값을 반환해주는 메소드 (기능)
매개변수를 가지지 않음 (필드의 값을 반환하는 기능이기 때문)
메소드의 이름을 지을때, 'get + 필드명' 으로 짓는다.
필드타입 get필드명() {...}
private String name = "John"; --> 필드
// name 필드에 대한 getter 메소드 선언
public String getName() {
return this.name;
} // getName
*setter 메소드
각 필드에 새로운 값을 대입해주는 메소드 (기능)
매개변수를 가져야함 (필드에 넣어줄 새로운 값이 필요하기 때문)
메소드의 이름을 지을때, 'set + 필드명' 으로 짓는다.
void set필드명(필드타입 매개변수명) {...}
private String name = "John"; --> 필드
// name 필드에 대한 setter 메소드 선언
public void setName(String name) {
this.name = name;
} // setName
* 일반적인 클래스가 위의 규칙을 지며서 자바빈즈 클래스가 되면 아래의 새로운 성질이 생긴다
'프로퍼티' (property)라는 새로운 개념이 생긴다
'프로퍼티'
1. 프로퍼티 =! 필드
2. 프로퍼티 = Getter or Setter - 접두사(get/set)
getName -> Name -> name : 이게 바로 프로퍼티!
setName -> Name -> name : 이게 바로 프로퍼티!
만약 아래와 같이 필드에 대해서 getter/setter 이름을 다르게 짓는다면
이 경우 절대 프로퍼티 이름 =! 필드이름
public String getMyName() { -----> MyName ----> myName (프로퍼티이름)
return this.name;
} // getName
public void setMyName(String name) { -----> MyName ----> myName (프로퍼티이름)
this.name = name;
} // setName
3. 여러번이 자바언어로 Mission Critical (아주 중요한) 기업업무를 웹 서비스로 만들때
바로 이 자바빈즈 클래스로 비지니스 데이터를 저장하는 객체를 만들기 때문이다!!!
- JSP/Servlet, Spring, J2EE, EJB, ...
- 프로퍼티를 통해 필드의 값을 조작 (읽기/쓰기)
- 결국 가장 중요한 비지니스 데이터를 보호해주는 역할
'국비학원' 카테고리의 다른 글
[국비지원] KH 정보교육원 13일차 (첫 테스트!) (0) | 2022.04.09 |
---|---|
[국비지원] KH 정보교육원 12일차 (0) | 2022.04.08 |
[국비지원] KH 정보교육원 10일차 (0) | 2022.04.06 |
[국비지원] KH 정보교육원 9일차 (0) | 2022.04.05 |
[국비지원] KH 정보교육원 8일차 (0) | 2022.04.04 |