14. 인터페이스의 여러가지 요소
<오늘의 목표>
어제 등장했던 아직까지 이숙하지 못한 명령어 들을 훌터보자.
<방법>
어제 정리한 블로그의 문서를 복습후 학습 시작
이론 정리
어제 등장했었던 명령어가 호출되는 순서 :
- 1) 파일을 검색 한다.
- 파일 이름을 인수로 보내면 참조 변수에 파일의 위치가 입력된다.
- 파일이 없으면 오류 FileNotFoundException가 출력되며. try로 오류대응을 하거나 , 처음에 NULL을 넣어서 NULL이 변하지 않으면 NULL일 경우의 조건식으로 처리하는 코드를 웹상에서 발견했다.
- fileinputstream 참조변수B = new fileinputstream(”파일이름”)
- 페어 구조(Key=Value)로 값이 입력될수 있는 영역을 갖고 있는 참조 변수와 인스턴스를 만든다.
- properties 참조변수A = new properties();
- 패어 구조를 입력 하기 위해 만들어진 공간에 file의 위치값를 입력해서 값을 불러와서 저장한다.
- 참조변수A.load(참조변수B);
- key값을 넣어서 value값을 확인 한다.
- String 참조변수C = 참조변수A.getProperty(”key 값”);
<CODE TEST>
파일 불러오기
- fileinputstream을 사용하기 위해서 파일 이름을 인수로 보낼때. 파일이름에 프로젝트 루트 계층부터 파일 영역을 입력해 줘야한다.
- 예로 들어 TEST(페키지)/A 일 경우 아래 코드와 같이 src/TEST/A파일 로 지정해주면 된다. 아니면 루트영역에 넣으면 파일이름만 입력하면 검색된다.
package A_0217; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; public class M { public static void main(String[] args) throws IOException { FileInputStream F = new FileInputStream("src/test/A"); Properties P = new Properties(); P.load(F); System.out.println(P.getProperty("Key_A")); } }
Key_A=value_A
<14챕터>
모든 변수는static final이 붙는다. static 이 붙으면 하부에서 구현된 클레스들에서 오직 하나의 인스턴스에 접근할수 있게 막을수 있지만. 자바에서 단일상속만 기능한것 처럼. 모호성으로 인해 안전성이 낮아지는것을 막기위해 변수가 변하지 못하는 방법으로 사용됩니다.
자바 8 이후 부터 사용할수 있는 인터페이스 기능들
1) default method : 디폴트 메소드
default 키워드를 메소드 앞에 붙여서 구현하는 클레스들에서 반복적으로 구현해야하는 메소드를 인터페이스에서 기본적인 형태를 구현해 놓을수 있게 되었다.(필요에의해 implement한 클레스에서 재정의 할수 있다)
TEST 1 : default로 구현한 메소드는 구현하는 클레스에서 메소드를 정의하지 않아도 되는거?
태스트 결과 : YES
TEST 2 : default로 구현한 메소드는 구현하는 클레스에서 재정의(overide)할수 있는가?
태스트 결과 : YES
package TEST3;
public class Do {
public static void main(String[] args) {
Sub S = new Sub();
S.method_A();
}
}
package TEST3;
public class Sub implements Super {
public void method_A() {
System.out.println("SUB method");
}
}
package TEST3;
public interface Super {
default void method_A() {
System.out.println("만약 이것이 보이신다면 오버라이드 되지 않는것입니다.");
}
}
2) static method : 정적 메소드
default와 마찬가지로 구현하는 클레스들에서 반복적으로 구현해야하는 메소드를 미리 구현할수 있지만. 인터페이스 객체를 implement 하거나 인스턴스를 만들지 않아도 프로젝트 내에서는 어디서든 사용할수 있게 할수 있다.
package TEST4;
public class Do {
public static void main(String[] args) {
Super.method_A();
}
}
package TEST4;
public class Sub implements Super {
public void method_A() {
System.out.println("SUB method");
}
}
package TEST4;
public interface Super {
static void method_A() {
System.out.println("영차");
}
}
자바 9 이후 부터 사용할수 있는 인터페이스 기능들
- private 메서드
구현한 클레스에서 재정의 불가능하다.
구현한 클레스에서 사용할수 없다. (진짜인지 테스트 코드 구현해보고 싶은에 이클립스 오류로 인해 연기하기로 함)
인터페이스 내부에서 static 이나 default를 사용하기 위해서 재공하는 메소드 이다.
- 구현하는 클레스에서 사용하기 위한게 아닌. 인터페이스 내이서 사용하기 위한 기능이다.
이클립스에서 JDK의 다른 버전 선택에 대한 . 궁금증과 더불어 다음 정리에서 학습을 진행 하기로 하겠습니다.
전문 용어
에러 메세지
학습 시간
캠 스터디
공부 모임
1) 카카오톡 오픈 채팅방
- 모르는것을 질문하거나
- 이해가 가지 않는 부분을 다른 분들의 블로그에서 참고하기 용도
2) 구루미 온라인 독서실
- 학습 시간을 관리 하거나 경쟁 하는 용도
온라인 강의 주소
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'학습방법 > 데일리 미션' 카테고리의 다른 글
[ 패스트캠퍼스 챌린지 27일차 ] 3:1:15 (0) | 2022.02.19 |
---|---|
[ 패스트캠퍼스 챌린지 26일차 ] 3:1:14 (0) | 2022.02.18 |
[ 패스트캠퍼스 챌린지 24일차 ] 3:1:01 ~ 3:1:13 (0) | 2022.02.16 |
[ 패스트캠퍼스 챌린지 23일차 ] 3:1:01 ~ 3:1:13 (0) | 2022.02.15 |
[ 패스트캠퍼스 챌린지 22일차 ] 3:1:01 ~ 3:1:13 (0) | 2022.02.14 |