instanceof instance의 형이 맞는지 여부를 check 해주는 것 public void Test(ArrayList list) { //int i; for (Animal animal : list) // for (i = 0; i < list.size(); i++) { // Animal animal = list.get(i); if (animal instanceof Human) { Human human = (Human)animal; human.readBook(); } else if (animal instanceof Tiger) { Tiger tiger = (Tiger)animal; tiger.hunting(); } else { System.out.println("unsupported type"); }..
Override 상위 클래스에 있는 메서드를 하위 클래스에서 새롭게 구현하고 싶을 때 반환값, 메서드 이름, 메서드 매개변수 type, 이름이 같아야 한다. //Customer.java (상위 클래스) public class Customer { public int calcPrice(int price) { bonusPoint += price * bonusRatio; return price; } } //VIP.java (하위 클래스) public class VIP_Customer extends Customer{ @Override public int calcPrice(int price) { bonusPoint += price * bonusRatio; price -= price * salesRatio; retu..
상속 & super() 하위 클래스를 생성할 경우 항상 상위 클래스의 instance가 생성되고 하위 클래스의 instance가 생성된다. //gpaeng은 고릴라 클래스의 instance => 고릴라를 사용한다고 생각 포유류 gpaeng = new 고릴라(); // gpaeng의 변수 type은 포유류 // gpaeng의 instance type은 고릴라 public class 포유류 { int age; //인스턴스 변수 static int height; //클래스 변수 void method(){ int i; // 지역 변수 } } super() 상위 클래스의 기본 생성자 호출 상위 클래스의 접근을 위한 수단 //Customer.java public Customer(int ID, String Name)..
Singleton Pattern (싱글톤 패턴) 디자인 패턴 프로그램에서 instance가 단 하나만 있게 하는 경우 코드 // Factory.java public class Factory { private static Factory instance = new Factory(); private Factory() {} public static Factory getInstance() { if (instance == null) { instance = new Factory(); } return instance; } } //Test.java public class Test { public static void main(String[] args) { Factory f = Factory.getInstance(); } }
변수와 메모리 관계 Program이 생행하여 process가 되어서 메모리에 로딩되는 순간 -> data 부분에 저장이 됩니다. 메모리는 code / data / stack 부분으로 되어 있고 code 부분은 heap 메모리를 사용하여 실행을 마치면 garbage s에 의해 소멸 됩니다. data 부분은 program이 끝나서 memory에서 upload 되는 순간 없어진다. (프로그램 꺼질때 없어지는 것) 변수 유형 선언 위치 사용 범위 메모리 생성 & 소멸 지역 변수(local 변수) 함수 내부 함수 내부에서만 사용 stack 함수가 호출될 때 생성되고 함수가 끝나면 소멸된다. 멤버 변수(instance 변수) class 멤버 변수로 선언 class 내부에서 사용되고 private이 아니면 참조 변수..
Access Modifier (접근 제어 지시자) 접근의 허용 범위를 제한하는 것 public 어디서나 접근 가능한 인스턴스 변수 및 메소드 protected 같은 package, 상속관계의 class에서만 접근 가능하다 default 같은 package 내부에서만 접근 가능 상속 관계라도 package가 다르면 접근 불가능 private 같은 class내부에서만 접근 가능 외부 class, 상속 관계의 class에서도 접근 불가능 Modifier Class 내부 동일 Package 상속받은 Class 나머지 영역 public o o o o protected o o o x default o o x x private o x x x