개발 기록
211109 스프링4 본문
쓰다가 생각이 든게 이렇게 쓰면 나중에 읽을까..? 제목만 보고는 뭐 썻는지도 모를텐데..
주기적으로 til 복습해야겠다 주말에라든지 이걸 지금 생각하다니..!!
매컴싸 !!
오늘 결석.. 복습복습
어제 실강때 인터페이스를 쓰는 이유가 다형성때문이라고 클래스 사용시 다중 상속이 불가능하다고 메모해놨다.
근데 오늘 주제가 자바 다이아몬드 문제 !!
--다이아몬드 문제
두개 이상의 클래스를 상속받은 D에서 특정 메소드를 실행시키려고 할때 그 메소드를 B,C가
모두 가지고 있을때. 어떤 상위 클래스의 메소드인지 알 수 없다
하지만 인터페이스는 실질적인 구현이 이루어지지 않고 메소드에 대한 선언만 하고 있기 때문에 다중상속이 가능.
+) 인터페이스도 메소드 선언 시에 default를 명시하게 되면 인터페이스 내부에서도 로직이 포함된 메소드 선언 가능.
이때는 다중상속 불가능하다. (지원하지 않거나 중복 메서드를 오버라이딩 해야한다)
--> 이걸 사용해야 하는이유..!?!?
- 인터페이스가 변경이 되면, 인터페이스를 구현하는 모든 클래스들이 해당 메소드를 구현해야 하는 문제가 있다. 이런 문제를 해결하기 위하여 인터페이스에 메소드를 구현해 놓을 수 있도록 하였다. (하위 호환성)
오버라이딩
부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것. 자식 클래스에서 상황에 맞게 변경해야 하는 경우 사용.
-조건 : 오버라이딩은 부모 클래스의 메소드를 재정의 하는 것이므로 메소드 이름, 매개변수,리턴 타입이 같아야한다. 내용만을 새로 정의하는 것.
하위 클래스 입장에서 부모 클래스란 말하자면 기본적인 동작 방법을 정의한 것이라고 생각할 수 있다. 하위 클래스에서 상의 클래스와 동일한 메소드를 정의하면 부모 클래스로부터 물려 받은 기본 동작 방법을 변경하는 효과를 갖게 된다. 기본동작은 폭넓게 적용되고, 예외적인 동작은 더 높은 우선순위를 갖게하고 있다.
생성자
메소드명이 클래스명과 동일하고 리턴 자료형이 없는 메소드
클래스를 가지고 생성된 객체는 모든 변수는 아직 초기화가 되지 않은 상태이다.
생성자는 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화할 수 있다.
public HouseDog(String name) {
this.setName(name);
}
생성자가 선언된 경우 생성자의 규칙대로만 객체 생성 가능
생성자는 객체가 생성될 때 호출된다. 객체가 생성될 때는 new라는 키워드로 객체가 만들어질 때이다.
HouseDog dog = new HouseDog("happy"); //문자열을 전달해야 함
//HouseDog dog = new HouseDog(); 오류남
- setName("happy")와 같은 필수적인 행동을 객체 생성시에 제어할 수 있게 된다.
접근제어자
-접근제어자를 사용하면 클래스 외부에서의 직접적인 접근을 허용하지 않는 멤버 변수를 설정하여 정보 은닉을 구체화할 수 있다.
1. private
2. public
3. default - default를 위한 접근 제어자는 따로 존재하지 않으며, 접근 제어자가 지정되지 않으면 자동적으로 default 접근 제어를 가지게 됨/ 같은 패키지에 속하는 클래스에서만 접근
4. protected - 같은 패키지에 속하는 클래스와 다른 패키지에 속하는 자식 클래스에서만 접근
MVC (Model, View, Controller)-소프트웨어 디자인 패턴
- 모델: 데이터와 비즈니스 로직을 관리
- 뷰: 레이아웃과 화면을 처리
- 컨트롤러: 요청을 모델과 뷰로 전달
-예를 들어보면, 쇼핑 리스트는 항목을 추가하거나 제거할 수 있게 해주는 입력 폼과 버튼을 갖습니다. 이러한 액션들은 모델이 업데이트되는 것이므로 입력이 컨트롤러에게 전송되고, 모델을 적당하게 처리한다음, 업데이트된 데이터를 뷰로 전송합니다.
자바 알고리즘
https://beomseok95.tistory.com/220
출처
'TIL' 카테고리의 다른 글
211111 TIL 스프링 (0) | 2021.11.12 |
---|---|
211110 스프링 (IOC,DI) (0) | 2021.11.10 |
211108 스프링3 (@RequestBody) (0) | 2021.11.08 |
211107 WIL (0) | 2021.11.07 |
211104 스프링2 (0) | 2021.11.04 |