package test1;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ObjectTest {
public static void main(String[] args) {
// 1. 부모클래스와 자식클래스 간의 호출
// Computer 클래스로부터 computer이라는 변수명으로 Laptop 생성자 호출시키고 new 연산자 를 통해 객체를 저장할 메모리 할당 후 객체 초기화한다.
Computer computer = new Laptop();
computer.setCpu("i7-7700K");
// ex) computer.setTouchPad("touchModelB"); -> 호출 안됨.
// computer에선 Laptop 클래스의 메소드를 호출할 수 없다.
// computer 객체에서 Laptop 클래스의 메소드를 호출 하려면
// 부모클래스에서 자식클래스 메소드 사용하기 위한 캐스팅이 필요하다.
((Laptop) computer).setTouchPad("touchModelB");
System.out.println(((Laptop) computer).getTouchPad());
// 2. 인터페이스와 클래스 간의 호출
Map map1 = new Map(); // -> 객체화 오류 발생
// Map은 인터페이스 이므로 객체화 할수 없으므로 객체를 생성할 수 없다.
// Map ConcurrentHashMap, HashMap, LinkedHashMap, TreeMap 같은 구현클래스를 선택해서 사용해야 한다.
// 1. Map
Map map2= new HashMap();
map2.put(1, "데이터1");
System.out.println(map2.get(1));
// 2. HashMap
HashMap hashmap1 = new HashMap();
hashmap1.put(1, "데이터1");
System.out.println(hashmap1.get(1));
// Map은 인터페이스 이므로 메소드에 대한 선언만 있으므로 두개의 선언 방식은 똑같다.
}
}
// 컴퓨터 클래스에 속성 - cpu, ram, power, mainboard
class Computer{
String cpu;
String ram;
String power;
String mainBoard;
public Computer(){
}
public String getCpu() {
return cpu;
}
public void setCpu(String cpu) {
this.cpu = cpu;
}
public String getRam() {
return ram;
}
public void setRam(String ram) {
this.ram = ram;
}
public String getPower() {
return power;
}
public void setPower(String power) {
this.power = power;
}
public String getMainBoard() {
return mainBoard;
}
public void setMainBoard(String mainBoard) {
this.mainBoard = mainBoard;
}
}
// 랩탑의 속성 - 터치패드, 무선
class Laptop extends Computer{
String touchPad;
String wireless;
public Laptop(){
super();
}
public String getTouchPad() {
return touchPad;
}
public void setTouchPad(String touchPad) {
this.touchPad = touchPad;
}
public String getWireless() {
return wireless;
}
public void setWireless(String wireless) {
this.wireless = wireless;
}
}