티스토리 뷰
클래스(Class)
상태(속성, 성질) : 멤버 변수(field , property)
기능 - 메소드
생성자(constructor) - 멤버 변수들을 초기화
ㄴ 클래스 이름과 동일
ㄴ매개변수는 있을 수도 있고, 없을 수도 있음
ㄴ 클래스를 작성할 때 생성자를 하나도 정의하지 않은 경우,
자바 컴파일러가 기본 생성자를 자동으로 만들어 줌.
ㄴ 생성자를 하나라도 정의한 경우에는, 자동으로 기본 생성자를 만들지 않음.
결론 : 생성자는 하나라도 있어야 한다.
class 이름 = 기본 생성자 이름 = 매개변수가 있는 생성자 이름 => 모두 같아야함
이미 작성한 이름을 변경하고 싶다면? 이름변경 단축키 이용 :: Shift + Alt + R


매개변수가 있는 생성자만 있으면 오류가 났음...

기본 생성자를 사용하여 만든 클래스의 인스턴스 생성 / 매개변수가 있는 생성자를 호출하여 인스턴스 생성
클래스명 변수명 = new 클래스명();
// 매개변수 있는
클래스명 변수명 = new 클래스명(null, null, ... );
# HW3 . 교재문제 3번.
MemberService 클래스에 login() 메소드와 logout() 메소드를 선언하려고 한다.
login() 메소드를 호출할 때는 매개값으로 id와 password를 제공하고, logout() 메소드는 id만 매개값으로 제공한다.
MemberService.java 소스코드에서 MemberService 클래스와 login(), logout() 메소드를 선언해보자
(1) login() 메소드는 매개값 id가 "hong", 매개값 password가 "12345"일 경우에만 true로 리턴하고 그 이외의 값일 경우에는 false를 리턴하도록 하세요.
(2) logout() 메소드의 내용은 "로그아웃 되었습니다." 가 출력되도록 하세요.

교재에서 준 main()문 소스코드를 변경해서 Scanner로 입력값을 만든다면


여기서 == 을 사용한다면 오류가 날 수 있다.
왜냐하면.. main()문에서 입력된 값의 주소값이 전송되고 == 연산자는 객체 참조의 주소값을 비교해줌
즉, 두 객체가 동일한 메모리 위치를 가리키는지 확인해준다.
따라서 객체의 내용을 비교하고자 할 땐 ' .equals() ' 매서드를 사용하면 된다.

접근 제한 수식어(Access Modifier)
1. 종류 : private , (package) , protescted , public
2. 기능 :
1) 멤버 변수에 대한 접근 권한을 설정
2) 메소드에 대한 접근 권한을 설정
3) 생성자에 대한 접근 권한을 설정
4) 클래스에 대한 접근 권한을 설정 (package, public만 사용 가능 )
3. 종류 및 의미 :
1) private(프라이빗) : 선언(정의) 된 클래스 안에서 직접 접근(사용)이 가능
2) (package) : 같은 패키지에 있는 클래스에서 직접 접근(사용)이 가능
3) protected : 같은 패키지에 있거나 상속받는 클래스들에서 직접 접근(사용)이 가능
4) public : 어디서든지 직접 접근(사용)이 가능
4. 사용범위 : private < (package) < protected < public
비유로 설명하자면 private는 같은 교실 안에서만 사용가능하고
package는 같은 학원 안에서 사용가능, protected는 같은 집안 사람들만 사용가능,
public은 누구나 가리지 않고 사용가능하다

n1 -> private 이므로 class Test01 내부에서만 사용가능
n2 -> (package) 이므로 같은 package 안에서만 사용가능
n3 -> protected 이므로 같은 패키지 이거나 상속받은 클래스들에서 사용 가능
n4 -> public 이므로 어디에서든지 사용가능

이 둘은 건물로 비유하자면 층만 다르다고 볼 수 있음

n1은 private 이므로 컴파일 에러가 나고
package , protected 는 같은 패키지에 있어 접근 가능, public 은 어디서든지 접근 가능하다.
캡슐화(encapsulation)
- 클래스를 설계할 때, 멤버 변수(필드)들을 private으로 선언하여
외부 클래스에서 멤버 변수들을 직접 접근해서 읽거나 쓰지 못하게 하는 것
- 필요한 경우 한해서 public 메소드를 정의하여
private 멤버 변수를 갑접적으로 읽거나 쓰는 것을 가능하게 할 수 있음


getter 메소드 : private 멤버 변수를 간접적으로 읽어오는 메소드
setter 메소드 : private 멤버 변수를 간접적으로 변경하는 메소드



// 기본 생성자 단축
Source > Generate Constructors from Superclass
// 매개변수(Field) 생성자 단축
Source > Generate Constructors using Fields

// private 변수들을 간접적으로 읽어오거나 변경할 수 있는 getter / setter 단축
Source > Generate Getters and Setters

// toString() : 데이터가 잘 들어가 있는 지 확인하기
출력할 때 문자열 변수명.toString() 으로도 볼 수 있다.
Source > Generate toString()


// 배열을 for 문으로 출력할 때는 for - each 를 사용한다.
예시 )
int [ ] numbers = {1, 2, 3, 4, 5}; // numbers 배열을 for - each 문을 사용하여 반복하고
for ( int n : numbers) {
System.out.println(n.toString()); // .toString() 을 사용하여 내용을 출력할 수 있음
}
예시 3 ) 더 더 줄여서 출력
int [ ] numbers = {1, 2, 3, 4, 5};
for ( int n : numbers) {
System.out.println(n); // 변수명만 입력해서 출력
}
'백엔드 교육과정 > 2월' 카테고리의 다른 글
2024.02.15.싱글톤 디자인 패턴 , static , 상속(Inheritance) , 생성자 , override , Object 클래스와 toString() (0) | 2024.02.15 |
---|---|
2024.02.14_JRE,JVM,final 제한자,멤버 변수,지역 변수,static,HW4 (0) | 2024.02.14 |
2024.02.07_ 객체 지향 프로그래밍 , 메소드 , 클래스 (+ 객체, 인스턴스)(수정) (0) | 2024.02.07 |
2024.02.06_ 2차원 배열, HW2 (0) | 2024.02.06 |
2024.02.05_Loop 예제 , 배열 (0) | 2024.02.05 |