이글은 백기선님 스터디 할래? 스터디를 뒤늦게 따라간 기록입니다.
스터디할래 링크 >> https://github.com/whiteship/live-study
이필기를 시작으로 공부했습니다 >> https://www.notion.so/4b0cf3f6ff7549adb2951e27519fc0e6
여기 없는내용은 스터디 할래 강의 내용 혹은 제가 java Doc보고작성하거나 예제를 만들어 추가했습니다.
그외는 같이 출처가 써있습니다.
인터페이스 | 규약. : 개발기간 단축, 결합도 낮주기, 표준화 구성 -상수 -추상메소드 : 재정의 하여 사용 -디폴트 메소드 jdk8 : 재정의 가능 -스테틱 메소드 jdk8 : 변경불가 구현방법 - 상속 - 익명클래스 다중상속 - 동일 이름 메서드 있을때. 재정의 필요. @Overide public void sameMethod(){ AInterface.super.sameMethod(); BInterface.super.sameMethod(); } -동일 이름 static 메서드 재정의가 안됨. -동일 이름 메서드 부모 static, 자식 default 호출방법이 다름. - 동일이름 메서드 무보 default 자식 static 불가. |
추상클래스 vs 인터페이스 |
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable 링크드 리스트는 "추상 순차 목록"이다. "List, Deque, Cloneable, Serializable" 을 할수 있다. 해당 클래스는 "추상~~~클래스"이다. "인터페이스" 을 할수 있다. |
클래스타입레퍼런스 vs 인스턴스 레퍼런스 |
클래스타입레퍼런스 : CalssA classA = new CallsA(); 인스턴스타입레퍼런스 : List<String> stringList = new ArrayLIst<>(); |
강한결합 vs 느슨한결합 | 강한결합: 코드 변경필요 :빠르지만 변경불리 기존 : A -> B 추가 : A -> C ->B or A->B->C 느슨한 결합 :코드변경 필요없음: 느리지만 유연하고 변경 유리 기존 : A--->I , I->B 추가: C --->I |
default Method | java8 등장이유 : 하위 호환성, 오픈소스코드에서 메소드가 추가되었을때 오류가 발생할수있다. from 자바의 신 이전에는 Handler 기능이 필요하면 추상클래스 adoptor를상속받아 일부만 구현할수 있게했음 public interface HandlerInterceptor { default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return true; } |
static method | java8 File의 public static File[] listRoots() { return fs.listRoots(); } |
private method | java9 1. private 메소드는 구현부를 가져야한다. 2. 오직인터페이스 내부에서만사용가능 3. private static 메소드는 다른 static, static아닌 메소드에서 사용가능 ??? 아직모르겠다. 4. static이 아닌 private메소드는 private static 메소드에서 상용불가 |
private static method | java9 File의 private static String slashify(String path, boolean isDirectory) { String p = path; if (File.separatorChar != '/') p = p.replace(File.separatorChar, '/'); if (!p.startsWith("/")) p = "/" + p; if (!p.endsWith("/") && isDirectory) p = p + "/"; return p; } |
자바 8 이후 추상클래스 | 자바8 , 9 기준 인터페이스 에서 못하는부분이 남아있음. public abstract class AbstractJoinMember { private String message ="" public void setMessage(String message){ } } 인터페이스 구현불가 : private 상수. 자바8기준 private 안됨. |
Constant Interface | 안티패턴임. 사용하지 마세요~ 1. 상수포함하여 모두 가져오고 계속가지고있음 2. 컴파일때 사용 런타임때 용도없음 3. 이진호환성을 필요로할때 계속유지 4. IDE가 없으면 상수 implement한 클래스에서 상수 사용할 때 네임스페이스 사용하지 않음 네임스페이스도 인터페이스 상수들로 오염 5. 인터페이스 구현해 클래스를 만드는 것은 클라이언트에게 알리는 행위... 혼동 6. 의도치 않은 현상 발생 https://jessyt.tistory.com/78 |
안티패턴 | 소프트웨어 공학 분야 용어이며, 실제 많이 사용되는 패턴이지만 비효율적이거나 비생산적인 패턴을 의미한다. |
extract method : 리펙토링메뉴. ????
https://spark.adobe.com/sp/design/page/new?_branch_match_id=623005067329261293
로고, 아이콘만들때.
비폭력 대화
- 인터페이스 정의하는 방법
- 인터페이스 구현하는 방법
- 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법
- 인터페이스 상속
- 인터페이스의 기본 메소드 (Default Method), 자바 8
- 인터페이스의 static 메소드, 자바 8
- 인터페이스의 private 메소드, 자바 9
'JAVA > Basic' 카테고리의 다른 글
[스터디할래? Java 10]멀티쓰레드 프로그래밍 (0) | 2021.05.15 |
---|---|
[스터디할래? Java 09]예외처리 (0) | 2021.05.14 |
[스터디할래? Java 07]패키지 (0) | 2021.05.14 |
[스터디할래? Java 06]상속 (0) | 2021.05.14 |
[스터디할래? Java 05] 클래스_ BinrayTree_DFS,BFS (0) | 2021.04.27 |