public class Animal {
public String name;
public void showName() {
System.out.println("안녕 나는 %s야. 반가워\\n", name);
}
}
public class Penguin extends Animal {
public String habitat;
public void showHabitat() {
System.out.println("%s는 %s에 살아\\n", name, habitat);
}
}
public class Driver {
public static void main(String[] args) {
Penguin pororo = new Penguin();
pororo.name = "뽀로로";
pororo.habitat = "남극";
pororo.showName();
pororo.showHabitat();
Animal pingu = new Penguin();
pingu.name = "핑구";
// pingu.habitat = "EBS";
pingu.showName();
// pingu.showHabitat();
// Penguin happyfeet = new Animal();
}
}
JRE의 동작:
main()
메서드가 있는지 확인한다.
main()
메서드를 발견한다.main()
메서드의 존재가 확인되면 JVM에 전원을 넣어 부팅한다.JVM의 동작 :
JRE에게 목적 파일을 전달받아 실행한다.
전처리를 한다.
Penguin pororo = new Penguin();
를 실행한다.
pororo.name = "뽀로로";
pororo.habitat = "남극";
pororo.showName();
pororo.showHabitat();
를 실행한다.
Animal pingu = new Penguin();
를 실행한다.
:Penguin
이 아닌 :Animal
인스턴스를 가리키고 있다.Animal
타입 으로 인스턴스화 하였기 때문이다.habitat
멤버와 showHabitat()
메서드를 가지고 있지 않으므로 사용할 수 없다.pingu.name = "핑구";
pingu.showName();
를 실행한다.
main()
메서드의 닫는 중괄호 }
를 만나서 main()
스택 프레임을 소멸 시킨다.
JRE는 JVM을 종료하고 JRE 자체도 운영체제 상의 메모리에서 사라진다.