추상클래스
- new를 하지 못하도록 해야한다.
- 코드의 재사용성
* 생성자
- 상속받은 생성자 호출시 부모생성자를 먼저 호출, super()이 생략되어 있다.
- 자식 생성자에서 부모생성자를 명시적으로 호출하지 않으면 자식생성자에서 기본적으로 부모생성자 호출, super()이 기본적으로 탑재
* 인터페이스
- 상수, 메소드 나열(선언시 구현은 되어있지 않음)
- 구현: implements 사용
- 인터페이스에는 다중 상속 지원가능
- 인터페이스 네이밍시 able을 붙여서 주로 사용
* 예외처리
- 예외사항을 받아서 시스템을 정상적으로 복구 시키기 위함.
1. try: 시도하고자 하는 코드
2. catch: 이 부분을 비워 놓는것이 가장 좋지않은 코드이다. (예외처리를 잡는 부분) => 비워 놓으면 어떤 에러가 발생했는지 알 수 없다. (정상적으로 실행이 되어있는지 아닌지 알 수 없음)
-> 절대 비워놓지 마라!
- 회사에서는 예외처리를 어떤 방식으로 하라는 규칙이 보통 있음. ==> 모르면 예외발생시 처리부분에 대해서 물어봐라.
1. 사과( 사용자에게 프로그램의 예외, 에러가 발생하는 원인에 대한 사과 및 이유를 말해줘야한다.)
2. 로깅(에러 데이터를 남겨야 한다.)
3. 정상종료(<-> 비정상종료: 종료하지 않고 아래의 남은 코드들이 도는 것.)/
- 코드는 system.exit(0)을 작성하여 종료시킨다.
- return; 으로 종료를 시킬수도 있음(하지만 이때는 finally가 실행이 된다.)
3. finally : 예외처리와 상관없이 무조건 실행되는 부분(자원정리를 하는데에 사용)
- checked exception: 예외처리(처리해야하는 부분)
- unchecked exception: error(고쳐야하는 부분)
- throws / throw
* 자바 패키지
- .getClass: Class type의 field, method의 정보를 관리하는곳 //reflection을 사용하면 class의 정보를 훝어볼수 있다.
- .hashCode():
hashing? 다양한 값에서 정수 값을 만들어내는것 // 해시함수(Hash Function)를 이용하여 해시 테이블(Hash Table)에 데이터를 저장하는 방법을 말합니다.
=> 정수로 만드는 이유: 속도, 비교가 빨라서 // address 기반의 해싱값 (address, reference 는 아님.)
- .toString(): getClass()를 한번 호출 한 다음 + "@" + hashcode()로 구현
* 동일, 동질성 비교
Point p1 = new Point(10, 20);
Point p2 = new Point(10, 20);
Point p3 = p2;
/* == : 두 객체의 동일성 비교 */
System.out.println(p1 == p2);
System.out.println(p3 == p2);
/* .equal() : 두 객체의 동질성 비교(안의 내용을 의미함) */
/* Object의 기본 구현은 동일성(==) 비교와 같다 */
System.out.println(p1.equals(p2));
System.out.println(p3.equals(p2));
'study > 개인공부' 카테고리의 다른 글
Java 기본(2) - 문자열 (0) | 2021.05.04 |
---|---|
wrapper class (0) | 2021.05.03 |
M1-W2-D1 (0) | 2021.05.03 |
M1-W1-D3 (0) | 2021.04.28 |
M1-W1-D2 (0) | 2021.04.27 |