20230721 TIL

기메단·2023년 7월 21일
0

TIL

목록 보기
5/44
scope : 범위
- 변수나 함수, 클래스 같은 멤버들을 서로 공유하여 사용할 수 있는 범위를 지정해 둔 단위.
스코프가 지정되는 범위 패키지 내부 클래스 내부 함수 등이 있다.  

패키지[변수, 함수{변수,함수}, 클래스{변수,함수}]

- 규칙 
1. 스코프 외부에서는 스코프 내부의 멤버를 참조 연산자로만 참조가 가능하다. 
  (클래스의 멤버를 참조할 때 클래스 외부에서 인스턴스 명의 참조 연산자를 사용하여야함.)
2. 동일 스코프 내에서는 멤버들을 공유할 수 있습니다.
3. 하위 스코프에서는 상위 스코프의 멤버를 재정의 할 수 있다. 

01. 접근제한자

- 코틀린에서는 public, private, internal, protected 로 접근을 제한한다.
- 객체를 이용해서 변수나 메소드를 호출할 수 있는지의 여부를 접근이라고 한다.

1. public: 명시하지 않으면 기본적으로 public 이다.(어디서나 접근할 수 있음)
2. private: 동일한 클래스(같은 파일) 내부에서만 접근할 수 있다.
3. internal: 같은 모듈 내부에서만 접근할 수 있다.
4. protected: 기본적으로 private이지만 상속을 받은경우에 타 모듈에서 접근할 수 있다.
   (클래스 스코프에서는, 클래스 자신과 상속받은 클래스에서 접근 가능 ) 

Why
- 접근 권한을 통해 데이터에 무분별한 접근을 막을 수 있다.
- 클래스들간에 접근하면 안되는 상황을 구분하기 때문에 향후 유지보수하기 용이함.

02. 예외 처리의 활용

- 프로그램을 실행하기 전에 알 수 있는 컴파일 에러를 오류라고 한다.
- 실행 도중에 예외가 발생하면 비정상적으로 프로그램이 종료된다. 
- 미리 예외를 생각하고 소스코드를 작성해서 안정성을 높인 프로그램을 만들자. 

* try-catch 구조 
	fun method1() {
		try {
			예외가 발생할 가능성이 존재하는 코드
		} catch(예외종류) {
			예외가 발생했을때 처리할 코드
		}
	}
* try 구조 
	fun method1(num1:Int) {
		if(num1 > 10) {
			throw 예외종류
		}
	}

03. 지연초기화

- 클래스를 설계할 때 초기의 값을 정의하기 난처해서 나중에 대입하기 위한 문법
- 변수는 lateinit(기본 자료형에서는 사용할 수 없음. String 클래스에서는 사용 가능), 
  상수는 lazy로 지연 초기화한다. 
  
  

04. Null 세이프티

- Null 예외로부터 안전한 설계를 위해 자료형에 Null 여부를 명시할 수 있다.
- 코틀린은 ?,!!,?.,?: 로 Null 예외로부터 벗어날 수 있다.
* ?. 는 안전 호출 연산자(safe-calls)라고 한다. 
- 강제로 null 이 아니라고 하는 !!는 최대한 사용 지양. 
- 키워드로 안전하게 실행했지만 Null이 출력되는 것을 막고 싶다면, 
   ?: 키워드를 사용해서 null 대신에 다른 문자열을 출력할 수 있다. 
* ?: 는 엘비스 연산자라고 한다.

0개의 댓글