Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- reshape
- flatten
- pandas
- 생활코딩
- 데이터베이서
- 파이썬
- 데이터베이스 개론
- tensorflow
- LeNet
- 생활코딩 데이터베이스
- CNN
- 머신러닝(딥러닝)
- JavaScript
- 카카오클라우드스쿨2기
- 야학
- 이것이 자바다
- 머신러닝야학
- 데이터베이스
- MySQL
- 개발자
- Java
- 판다스
- Python
- Database
- 머신러닝
- 딥러닝
- 연산자
- 생활코딩 머신러닝야학
Archives
- Today
- Total
IT's 우
[java] final vs finally vs finalize 본문
728x90
final 키워드 → 변경 ❌
- 변수, 메서드 클래스가 변경 불가능 하도록 만든다.
- 기본 타입 변수에 적용 시
- 해당 변수의 값 변경 ❌
- 참조 변수에 적용 시
- 참조 변수가 힙 내의 다른 객체를 가리키도록 변경할 수 ❌
- 메서드에 적용 시
- 해당 메서드를 오버라이드 할 수 없다.(오버로딩은 가능)
💯 오버로딩(Overloading)
자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있다.
- 오버로딩의 조건
메서드의 이름이 같고, 매개변수의 개수나 타입이 달라야 한다. 주의할 점은 **‘리턴 값’**만 다른 것은 오버로딩을 할 수 없다는 것이다.
오버라이딩(Overriding)
부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의 하는 것
- 오버라이딩 조건
오버라이딩은 부모 클래스의 메서드를 재정의하는 것이므로, 자식 클래스에서는 오버라이딩하고자 하는 메서드의 이름, 매개변수, 리턴 값이 모두 같아야 한다.
finally 키워드 → try-catch 문에서 사용
try {
//예외가 없다면 수행해야 할 일
} catch {
// exception 처리
}
finally {
// 예외가 있든 없든 항상 수행해야 할 일
}
- try catch 블록 뒤에서 항상 실행될 코드 블록을 정의하기 위해 사용한다.
- try에 return이 있더라도 finally가 수행된 후 return 된다.
finalize 메서드
- 가비지 컬렉터가 더 이상의 참조가 존재하지 않는 객체를 메모리에서 삭제하겠다고 결정하는 순간 호출된다.
- 즉 더 이상 사용되지 않는 객체가 있을 때 메모리 낭비를 막기 위해서 GC가 이 객체를 없애 버리는데 이때 해당객체의 finalize()를 호출해서 없앤다.
- finalize()는 java.lan.Object 클래스로부터 상속받아 모든 클래스의 객체가 가지고 있는 메서드.
- 즉, 만약 객체가 삭제되기 직전에 실행되어야 하는 로직 같은 게 있다면 Object 클래스에 정의된 finalize() 메서드를 오버라이딩하여 정의할 수 있다.
- (권장 ❌) finalize()는 언제 호출될지 알 수 없기 때문에, finalize()를 오버라이딩 했다고 해서 여기에 의존하는 방식의 코딩은 좋은 방법은 아닐 수 있다.
참고
https://github.com/backtony/Backend_Interview_for_Beginner/blob/master/Java.md
728x90
반응형
'CS > Java' 카테고리의 다른 글
[java] 리플렉션(Reflection) (0) | 2023.07.14 |
---|---|
[java] 추상 클래스와 인터페이스 차이 (0) | 2023.07.14 |
[Java] == 와 equals 차이 (1) | 2023.06.15 |
[Java] String vs Char 차이 (1) | 2023.06.15 |
[Java] Object 클래스 (0) | 2023.06.01 |