2020.11.02 일지

0후·2020년 11월 2일
0

비트캠프

목록 보기
11/112

오늘의 요약

1. 제한자( Modifier )
	클래스, 인터페이스, 변수, 생성자, 메소드 앞에 붙어서 그 기능을 '제한'하는 예약어 
	(1) 접근제한자( Access Modifier )
       1) 종류 
	     <1> public: 제한이 없음, 모든 곳에서 접근 가능
		 <2> protected: 같은 패키지 안 or 상속 관계의 부모자원에 접근 가능
		 <3> default ( package == friendly ): 같은 패키지 안에서만 접근 가능
		 <4> private: 자신의 클래스 안에서만 접근 가능

	   2) 특징 
	     <1> 클래스나 인터페이스 앞의 접근제한자는 publicdefault 만 가능 
		 <2> public 클래스는 파일이름과 이름이 같아야 함, 따라서 한 java 파일 내 public 클래스는 최대 한 개만 올 수 있다.

	   3) 범위
	   - 넓은 순위 : public > protected > default > private
	   - 강력 순위 : public < protected < default < private

	(2) 소유제한자( static )
		붙으면 클래스 소유, 안 붙으면 객체 소유
		1) 멤버와 메소드에만 붙을 수 있음
		2) static 메소드에서는 자원접근 시 자신의 클래스를 생략 가능
		3) 자원접근 시 클래스 이름으로 접근
		4) static 자원은 메모리에 1개 생성되어, 해당 클래스의 모든 객체에게 공유됨
		-> 설정값 변경 시, 만약 내 스코어를 상대에게 공유할 때 많이 사용함
		-> 멀티쓰레드에 굉장히 취약하므로 남발하여 사용하면 좋지 않다.

	(3) 수정제한자( final )
		붙으면 수정을 못하게 함
		1) 클래스, 변수(멤버, 지역), 메소드 앞에 붙을 수 있음
		2) 클래스에 붙으면 자식을 '못 낳고', 변수에 붙으면 초기값을 '못 바꾸고', 메소드 앞에 붙으면 '오버라이딩을 못하게 함'
		3) 지역변수에도 붙을 수 있음
		-> 상식적으로 String 클래스는 final 이므로 자식을 낳을 수 없다.

	(4) 추상제한자( abstract )
		붙으면 추상화()가 됨
		-> 다형성 때문에 사용함, 근데 현재로서는 자세하게 알지 못해도 괜찮음
		1) 클래스와 메소드 앞에서만 붙을 수 있음
		2) 하나 이상의 '추상메소드'만 가지고 있어도, 그 클래스는 '추상클래스'가 의무적으로 되어야 함
		3) 추상클래스의 객체는 완벽한 자식클래스를 만들어서, 그 객체를 '형변환'하여 생성함
	
		cf) 추상클래스 : abstract 가 붙은 클래스
			추상메소드 : abstract 가 붙은 메소드

	(5) 기타제한자 
		synchronized (쓰레드), transient (보안), native (OS 자원), 
	
2. 식별자( Identifier )
	'프로그래머 임의로' 설정하는 패키지, 클래스, 변수, 메소드 '이름'
	(1) 규칙
		1) 숫자가 맨 앞에 나올 수 없음
		2) 특수문자는 _와 $만 가능 (맨 앞에 나와도 됨)
		3) 길이의 제약은 없음
		
	(2) 관례
		1) 클래스와 인터페이스 이름은 첫문자를 대문자로 시작
		2) 상수는 전체 문자를 대문자
		3) 패키지, 변수, 메소드 이름의 첫문자는 소문자로 시작
		4) 2개 이상의 단어 조합은 다음 단어의 첫문자를 '대문자'로 하거나 '_'로 처리
		5) _와 $는 자제함
		6) 의미있는 단어로 생성함
  • 예외처리 시, API문서 보고 throws 부분을 확인하면서 처리해주면 됨!
    예외사항은 돌.발.상.황이다!
    throws부분확인용
profile
휘발방지

0개의 댓글