상세 컨텐츠

본문 제목

[Java] 변수로 배우는 상속(Inheritance)과 다형성(Polymorphism)

개발

by GoblinMode 2024. 1. 1. 17:56

본문

728x90
반응형

자바(Java)공부와 개발언어를 배우기 시작하면 변수를 배우게 된다. 

 

변수란 데이터를 저장하기 위한 공간 입니다. 

 

데이터는 0,1을 조합하여 문자, 숫자등을 말합니다. 

Stirng str = "ABC";
int i = 13;
boolean isBoolean = true;

 

개발공부를 시작하면 흔히 볼수있는 변수들이다.

 

우리는 자바(Java) 객체지향언어를 배우기 시작하면 변수를 시작으로 클래스이후 객체지향을 배우며 상속에 대한 개념을 

 

배우기 시작한다. 

 

상속(Inheritance)이란 우리가 생활에서 사용하던 단어와 비슷하다. 부모에게 무엇을 받는것을 뜻한다.

 

자바(Java)에서도 비슷하다. 상위클래스에서 기능을 받아 사용하는 것을 말하며, 이것에는 오버라이딩과 오보로딩이 있다.

 

상속 (Inheritance) 과 다형성(Polymorphism)을 배우다보면 자동차, 색상등 다양한 예를 들어 공부하게 되는데 

 

개념을 잡기가 쉽지 않다. 그래서 여러번 공부하고 개념을 숙지하는데 오래 시간이 걸린다.

 

하지만 우리는 이미 상속과 다형성을 이용하고있다. 사용한적 없는데요. 라고 생각 할 수있지만,  그렇지 않다.

 

왜냐면 우린는 String, int, Boolean 등 변수를 사용하고 있기 때문이다. 변수를 사용하는데 왜 상속?다형성?

 

이라고 생각하신다면 사용중인 String, int에 클래스(Class)를 확인해보자. 사용중인 변수들도 다 클래스(Class)로 이루어

 

져있다. String 클래스(Class)를 보면 Object를 상속하고있는걸 확인할수있다. Object는 모든 변수의 조상이다.

 

그래서 우리는 String, int, boolean 타입에서 toString 메소드등 당연하게 사용하던 메소들을 사용하고 있습니다.

 

이런 상속과 다형성은 어떻게 사용할수 있을가요? 

 

아래 코드를 보면서 이해해보시조.

HashMap<String, String>() dataMap = new HashMap<String,String>();

 

위에 Map에 Key, Value 로 값을 저장하는데 Value는 String 타입으로만 저장이 가능하다.

 

하지만 사용자에따라 누구는 int, Boolean 등 다양한 데이터를 저장하고 싶다. 이럴때는 어떻게 할수있을가?

 

방법은 생각보다 간단합니다. 상속과 다형성에 개념을 알고있다면 변수에 모든 조상인 Object 타입으로 지정하면 됩니다.

 

HashMap<String, Object> dataMap = new HashMap<String, Object>();

 

이렇게 Map을 Value 속성을 Object 타입으로 선언해준다면, String, int, boolean 등등 다양한 변수를 저장 할수있게되었는

 

데 Object로 저장하게되면 어떻게 다시 사용해야하니 사용방법도 알아 보시조.

 

Java에서는 instanceof를 사용하여 확인할수 있습니다.

HashMap<String, Object> dataMap = new HashMap<String, Object>();
String str = "ABC";
int i = 11;
boolean isBoolean = true;

dataMap.put("str", (Object)str);
dataMap.put("i", (Object)i);
dataMap.put("isBoolean", (Object)isBoolean);

for(String key : dataMap.keySet()){

	Object tempObject = dataMap.get(key);
    
    if(String instanceof tempObject){
        // Object Type String
    }else if(Integer instanceof tempObject){
        // Object Type int
    }else if(Boolean instanceof tempObject){
        // Object Type Boolean 
    }
}

 

이렇게 상속(Inheritance) 다형성(Polymorphism)을 변수통하여 알아봤습니다. 

 

개발언어를 배우는데 객채지향에 개념을 변수를 통하여 확인해보았습니다.

728x90
반응형

관련글 더보기