class A {
int m = 3;
static int n = 5;
}
class A {
int a;
static int b;
static {
b = 5;
System.out.println("클래스가 로딩될 때 static block 실행");
}
A() {
a = 3;// 인스턴스 필드 초기화 위치
}
}
public class ...
public static void main(String[] args) {
System.out.println(A.b);// 클래스가 로딩될 때 static block 실행 -> 5
}
class A {
int m;
void abc(){...}
}
class B extends A {
int n;
void bcd(){...}
}
B b = new B();
B b = new B();
b.abc();// O
b.bcd();// O
A a = new B();
a.abc();// O
a.bcd();// X
class A {
void print1() {...}
void print2() {...}
}
class B extends A {
void print1() {...}// 오버라이딩
void print2(int a) {...}// 오버로딩
}
class A {int m = 3;}
class B extends A {int m = 4;}
class A {static int m = 3;}
class B extends A {static int m = 4;}
class A {
static void print() {...}
}
class B extends A {
static void print() {...}
}
public boolean equals(Object obj) {// 주소비교 -> 데이터 값 비교
if (obj instanceof B) {
if (this.name == ((B) obj).name)// 다운 캐스팅
return true;
}
}
class A {
String name;
A(String name) {this.name = name;}
@ override
public boolean equals(Object obj) {
if (obj instanceof A) {
if (this.name == ((A) obj).name)
return true;
}
return false;
}
@ override
public String toString()
return name;
}
class B {
String name;
B(String name) {this.name = name;}
@ override
public boolean equals(Object obj) {
if (obj instanceof B) {
if (this.name == ((B) obj).name)
return true;
}
return false;
}
@ override
public int hashCode()
return name.hashCode();
@ override
public String toString()
return name;
}
public class ...
public static void main(String[] args) {
HashMap<Integer, String> hm1 = new HashMap<>();
hm1.put(1, "데이터1");
hm1.put(1, "데이터2");
hm1.put(2, "데이터3");
// -> 1 = 데이터2, 2 = 데이터3
HashMap<A, String> hm2 = new HashMap<>();
hm2.put(new A("첫 번째"), "데이터1");
hm2.put(new A("첫 번째"), "데이터2");
hm2.put(new A("두 번째"), "데이터3");
// -> 첫 번째 = 데이터2, 두 번째 = 데이터3, 첫 번째 = 데이터1
HashMap<B, String> hm3 = new HashMap<>();
hm3.put(new B("첫 번째"), "데이터1");
hm3.put(new B("첫 번째"), "데이터2");
hm3.put(new B("두 번째"), "데이터3");
// -> 첫 번째 = 데이터2, 두 번째 = 데이터3
}
}