메소드를 정의할 때 이름옆 ()에 메소드 호출시 넘겨주고 메소드에서 사용할 변수를 선언하고 받을 수 있다.
public static void main(String[] args){
//String[] args는 main메서드를 호출할 때 넘겨주는 매개변수
}
클래스 로드시 메모리에 올려 이후 런타임때 해당 변수 또는 객체를 여러 객체가 함께 공유하여 사용하게 하는 키워드이다.
서로 다른 객체들 사이에 관계가 생겨 결합도를 높이고 코드의 응집도를 낮추는 안좋은 코드이기 때문에 객체들 간 변하지 않고 공유하는 속성들을 정의할 때를 제외하고는 주의해서 사용해야 한다.
자료 > 스탬프 > 제어 > 외부 > 공통 > 내용
위의 순서대로 결합도가 높아진다 (낮을수록 좋음)객체와 객체의 관계(부모,자식,메소드호출)
기능 > 순차 > 통신 > 절차 > 시간 > 논리 > 우연
위의 순서대로 응집도가 높아진다(높을 수록 좋음)
//아래로 갈수록 사용가능한 범위가 좁아진다.
// 같은 클래스 같은 패키지 자식 클래스 전체
public O O O O
protected O O O
default O O
private O
하나의 클래스에 만든 변수와 메소드를 다른 클래스에 그대로 물려주는 것.
코드의 재사용성을 높인다.
class A extends B{
//위와 같이 extends [상속받을 클래스명]의 형식으로 상속받는다.
}
하나의 클래스에서 같은 이름의 메소드를 매개변수와 반환타입 등을 바꿔 여러개처럼 사용하는 것.
public void printOne(){
System.out.println(1);
}
//오버로딩
public void printTwo(int one, int two){
System.out.println(one);
System.out.println(two);
}
자식클래스에서 부모클래스의 메소드를 똑같은 이름으로 재정의하는 것
class Parents{
public void show(){
System.out.println("parents");
}
}
class Son{
@Override
public void show(){
System.out.println("son");
}
}
클래스 명과 이름이 같은 메서드로, 객체를 생성할때 반드시 호출되는 메서드
class A{
int a;
public void A(){
//기본 생성자, 따로 작성하지 않아도 자동으로 호출됨
}
//생성자 오버로딩
//기본생성자 없이 오버로딩된 생성자만 명시하면
//반드시 오버로딩된 생성자로만 객체를 생성할 수 있다.
//기본 생성자와 같이 사용하려면 기본생성자도 반드시 명시해야한다.
public void A(int num){
this.a = num;
}
}
| 생성 패턴 | 구조 패턴 | 행위 패턴 |
|---|---|---|
| 싱글톤 | 어댑터 | 책임 연쇄 |
| 메소드 | 브리지 | 커맨드 |
| 추상 팩토리 | 컴퍼지트 | 인터프리터 |
| 빌더 팩토리 | 데커레이터 | 이터레이터 |
| 퍼사드 | 미디에이터 | |
| 플라이웨이트 | 메멘토 | |
| 프록시 | 옵저버 | |
| 스테이트 | ||
| 스트레티지 | ||
| 템플릿 메서드 | ||
| 비지터 |
스프링 프레임워크에서 가장 기본이 되는 형태(Bean)
하나의 클래스로 하나의 객체만 생성할 수 있게 만드는 디자인 패턴private생성자로 객체 생성을 제한하고, get메소드로 해당 클래스에서 생성된 객체 하나를 리턴해주는 형태
싱글톤 패턴을 구현할 수 있는 다양한 방법이 있는데 그 중 4가지와 그 차이점에 대해 알아야 함
스레드 -> 동시성제어-> DB -> 락 -> 트랜잭션 -> 사용한경험?
클라이언트가 요청한 파일을 다운시켜주는 서버
클라이언트가 요청하면 해당하는 프로그램 코드를 실행해서 프로그램의 실행 결과를 알려주는 서버