2020.11.03 일지

13373 단어 JavaJava

오늘의 요약

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) interfacestatic 메소드는 인터페이스 이름으로만 접근 가능, 객체로는 접근 불가능
		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 실습

  1. powershell에서 하면 안됨! 무조건 cmd에서 실행!
  2. depth 들어가는 폴더 이름에 공백 및 한글이 들어가면 invalid flag 라고 에러 뜸, 따라서 폴더 이름에 공백 제거 및 영문화는 필수

좋은 웹페이지 즐겨찾기