MVC 패턴 - => 애플리케이션의 역할을 세가지로 분리하는 설계 패턴
Model - 프로그램 로직과 관련되어 있는 데이터를 저장하는 용도 + 비즈니스 로직 (DB, 서비스, 객체)
vo( Value Obect) : 값 저장용 객체를 만들기 귀한 클래스를 모아두는 패키지
View - 사용자에게 보여지는 화면 (UI - HTML, JSP, Thymeleaf, React)
Controller - 사용자의 요청을 받고, 모델과 뷰를 연결하는 역할 (응답)

public class Member {
private String name;
private int age; =========================== 필드
public Member() {} ========================== 생성자
public String getName() {
return name;
}
public void setName(String name) { =========== 메서드
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
| 구분 | 같은 패키지 내 | 전체 |
|---|---|---|
| + public | O | O |
| ~ (default) | O | X |
예)
public class 클래스명 {
// .............
}
class 클래스명 {
// .............
}
private int age;
2) 클래스 변수 (== static 변수) : 필드에 static 예약어가 작성된 변수
public static String schoolName;
[접근제한자] [예약어] class 클래스명 {
[접근제한자] [예약어] 자료형 변수명 [= 초기값];
}
public class Academy {
public int temp1;
protected int temp2;
int temp3; //접근제한자 생략 시 (default)
private int temp4; //캡슐화 원칙으로 private 사용
}
| 구분 | 해당 클래스 내부 | 같은 패키지 내 | 후손 클래스 내 | 전체 |
|---|---|---|---|---|
| + public | O | O | O | O |
| # protected | O | O | O | |
| ~ (default) | O | O | ||
| - private | O |
public int v1 = 10; // 전체에서 접근 가능
protected int v2 = 20; // 후손클래스 내까지 접근 가능
int v3 = 30; // (default) 같은 패키지 내까지 가능
private int v4 = 40; // 해당 클래스 내부에서만 가능
public static String schoolName = "KH고등학교";
private int TEMP1 = 100;
객체가 new 연산자를 통해 Heap 메모리 영역에 할당될 때
객체 안에서 만들어지는 필드 초기화 + 생성 시 필요한 기능 수행
생성자는 일종의 메소드로 전달된 초기값을 받아서 객체의 필드에 기록
[접근제한자] [예약어] class 클래스명 {
[접근제한자] 클래스명() { }
[접근제한자] 클래스명(매개변수) { (this.)필드명 = 매개변수; }
}
public class Academy {
private int studentNo;
private String name;
public Academy() {} // 기본 생성자
public Academy(int studentNo, String name) { //매개변수 있는 생성자
this.studentNo = studentNo;
this.name = name;
}
}
public User(){}
public User(String userId, String userPw){}
public User( String userId, String userPw, String userName,
int userAge, char userGender) {}
==============================================================================
public User() {} // 기본생성자가 이미 작성되어 있어서 X
public User(String userId) {} // 매개변수의 개수가 같은 생성자 없음
// -> 오버로딩 성립
public User(int userAge) {} // 매개변수의 개수는 같지만 타입이 다름
// -> 오버로딩 성립
public User(String userId, int userAge) {}
// 매개변수의 개수가 동일한 것은 있으나, 하나의 타입이 다름
// -> 오버로딩 성립
public User(int userAge, String userId) {}
// 매개변수의 개수와 타입이 동일하지만, 순서가 다름
public User(int userAge, String userName) {}
// 위 매개변수의 개수, 타입, 순서 모두 같아서 불가
// -> 변수명은 신경쓰지 않는다
@Override // @ (어노테이션) : 컴파일러 인식용 주석
public String toString() {
return "User [userId=" + userId + ", userPw=" + userPw + ", userName=" + userName + ", userAge=" + userAge
+ ", userGender=" + userGender + "]";
this.userId = userId;
this.userPw = userPw;
// ㄴ 필드 = ㄴ 매개변수
public class Academy{
private String name;
public Academy() { }
public Academy(String name) { this.name = name; }
}
public class Academy{
private int age;
private String name;
public Academy() { this(20, “김철수”); }
public Academy(int age, String name) {
this.age = age; this.name = name;
}
}