has/is a Relationship을 갖고 있는 Super class와 Sub class 간의 형 변환
class Super {
public void a() {
System.out.println("Super : a()");
}
}
class Sub extends Super {
public void a() {
System.out.println("Sub : a()");
}
public void b() {
System.out.println("Sub : b()");
}
}
public class CastingComplete {
public static void main(String[] args) {
System.out.println("Super s1 = new Super()");
Super s1 = new Super();
s1.a(); //Super : a()
System.out.println("Sub s2 = new Sub()");
Sub s2 = new Sub();
s2.a(); //Sub : a()
s2.b(); //Sub : b()
System.out.println("Super s3 = new Sub()");
//묵시적 형변환
Super s3 = new Sub();
s3.a(); //Sub : a()
//부모님한테 천원이 있었어요. 자식은 부모님에게 천원을 받아 껌를 샀습니다.
//부모의 입장에서 가지고 있던 돈이 자식에게서 껌으로 변했으니 껌을 참조한다.
//s3.b(); //=>error, s3는 b()를 참조할 수 없다.
//명시적 형변환
Sub sub = (Sub)s3;
sub.b(); //Sub : b()
: 일종의 abstract class보다 추상화 정도가 높고, 추상화 되지 않은 method 또는 member variable을 구성원으로 가질 수 없다. 즉, 상수와 추상 method들로 구성되어 있는 interface
iterface 인터페이스이름{
(public static final) 타입 상수 이름 = 값; //public static final은 생략 가능
(public abstract) method 이름(매개변수); //public abstract는 생략 가능
}
: Heap 영역의 Object 중 stack 에서 도달 불가능한 (Unreachable) Object들을 처리하는 기능.
garbage collecting : Heap 영역의 Object 중 stack 에서 도달 불가능한 (Unreachable) Object들을 처리하는 과정
garbage collection : garbage collector가 garbage collecting하는 모든 과정