코드 그라데이션
Day25. 추상화 (3) final, equals() 본문
final
- 값을 변경할 수 없는 것.
ex.)
public [final] int max = 20;
max = 30; (에러)
변수/ 메소드/ 클래스 에 사용가능하다
변수 final - 값을 변경 할 수 없다.
메소드 final - 오버라이딩 일때 사용 불가능
클래스 final - 상속 불가
사용 예시
final class T1 {
}
class T2 extends T1 { // T1 이 final이라 상속 불가능
}
class T3 {
final void abc() {
}
}
class T4 extends T3 {
// void abc() // final => 오버라이딩 불가능
}
public class FinalTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
final int a = 20;
// a = 30; // final 변수라 에러가
}
}
equals
> 비교를 위해 사용하는 키워드
이러한 경우가 있다고 해보면,
Class A{
}
메인 메서드에
A a = new A();
A a1 = new A();
이 때,
a == a1 // false => 객체가 다르니까
a.equals(a1) // false => 무조건 객체 같아야합니다.
그런데 만약에,
A a2 = new A();
A a3 = a2;
이런 경우가 있다고 해보면,
a2 == a3 // true ----> 같은 주소를 바라보고 있게 된다.
예제
public class EqualsTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
C c = new C();
C c1 = new C();
C c2 = c1;
if(c == c1) {
System.out.println("c == c1"); // 출력 안 됨
}
if(c.equals(c1)) {
System.out.println("c.equals(c1)"); // 출력 안 됨.
}
if(c1 == c2) {
System.out.println("c1 == c2");
}
String str = "하이";
if(str == "하이") {
System.out.println("str == 하이");
}
if(str.equals("하이")) {
System.out.println("str.equals(\"하이\")");
}
}
}
728x90
'Java > Mega' 카테고리의 다른 글
Day27-2. 자료구조 도입 (0) | 2023.04.23 |
---|---|
Day27-1. 제네릭 (0) | 2023.04.23 |
Day25. 추상화(1) 추상클래스, 추상메서드 (0) | 2023.04.17 |
Day24-2. 참조자료형 형변환, 오버라이딩 예제 (0) | 2023.04.17 |
Day24. 참조자료형 형변환, 오버라이딩 (0) | 2023.04.17 |
Comments