2020.11.03 일지
오늘의 요약
1. 패키지( Package )
비슷한 종류의 '기능'이나 '업무'를 가진 클래스와 인터페이스들의 묶음
(1) 형태
클래스 최상단에 package 라는 예약어 를 사용
( ex : package soo.aa.bb; )
-> 안드로이드 앱에서는 폴더구조가 2개의 depth 이상 이루어져야 한다.
(2) 컴파일
#> javac -d . XXX.java // 상대 경로 : 현재 디렉토리 생성
#> javac -d ./classes XXX.java // 상대 경로 : 하위 디렉토리 생성
#> javac -d ../ XXX.java // 상대 경로 : 상위 디렉토리에 생성
#> javac -d C:\SOO XXX.java // 절대 경로
(3) 실행
#> java soo.aa.bb.A // 패키지 최상단 디렉토리로 이동 후 실행
(4) 압축
#> jar -cvf p.jar soo
(5) classpath ( *** ) // 기본적으로 패키지에 포함되지 않은 java 소스 파일을 컴파일할 때 classpath를 설정하게 된다.
1) -classpath 법 ( 유효범위 : javac.exe, java.exe )
<1> 디렉토리
#> javac -classpath C:\SOO\Java\day11\classes AUser.java
#> java -classpath .;C:\SOO\Java\day11\classes AUser
<2> jar
#> javac -classpath C:\SOO\Java\day11\jar\p.jar AUser.java
#> java -classpath .;C:\SOO\Java\day11\jar\p.jar AUser
2) set classpath 법 ( 유효범위 : cmd )
<1> 디렉토리
#> set classpath=%classpath%;C:\SOO\Java\day11\classes
#> javac AUser.java
#> java AUser
<2> jar
#> set classpath=%classpath%;C:\SOO\Java\day11\jar\p.jar
#> javac AUser.java
#> java AUser
3) 환경변수 법 ( 유효범위 : OS )
<1> 디렉토리
.;C:\SOO\Java\day11\classes
<2> jar
.;C:\SOO\Java\day11\jar\p.jar
cf1) build path ( in eclipse )
cf2) javadoc -d ./doc *.java // API 문서화
2. 인터페이스 ( interface )
-> 인터페이스를 왜 쓰는걸까? :
- JDK7 이하: '상수'와 '추상메소드'로 구성된 '껍데기'
- JDK8 이상: '상수'와 '추상메소드'와 'static 메소드'와 'default 메소드'로 구성된 '껍데기'
(1) 생략
1) interface 앞에는 abstract 생략
2) 멤버변수 앞에는 public static final 생략 됨
3) 메소드 앞에는 public abstract 생략 됨
4) static 메소드에는 public 생략됨
5) default 메소드에는 public 생략됨 // 인터페이스에서만 정의하는 default 메소드
(2) 특징
1) 객체는 완벽한 자식 클래스를 만들어서 그 객체 생성 후 형변환해서 만듬
2) interface 의 static 메소드는 인터페이스 이름으로만 접근 가능, 객체로는 접근 불가능
3) 자식클래스를 만들때에는 implements 사용
( 다중상속가능 : class BChild implements B1, B2, ... )
4) 인터페이스 끼리의 상속은 extends 사용
( 다중상속가능 : interface B3 extends B1, B2, ... )
5) 일반적인 자식클래스의 형태
class Superman extends Human implements B1, B2, ...
3. 추상클래스와 인터페이스 차이점
(1) 공통점
- 추상메소드를 가질 수 있음
- 완벽한 자식객체를 생성해서 형변환
(2) 차이점
- 클래스이고 인터페이스 근본 특성
- 추상클래스는 일반메소드와 일반멤버변수와 생성자를 가질 수 있음
classpath 실습
powershell
에서 하면 안됨! 무조건cmd
에서 실행!- depth 들어가는 폴더 이름에 공백 및 한글이 들어가면
invalid flag
라고 에러 뜸, 따라서 폴더 이름에 공백 제거 및 영문화는 필수
Author And Source
이 문제에 관하여(2020.11.03 일지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@peachy/study-012저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)