본문 바로가기

분류 전체보기

(37)
enum type & static final 상수값으로써 배포용으로 사용됩니다. 요일, 사계절 등의 정해진 값이나, 혹은 프로그램상으로 정해놓은 값을 배포 할 때 사용됩니다. 상수값으로 사용되는 가장 대표적인 값이 원주율을 나타내는 PI(3.14)값이라고 할 수 있겠습니다. PI값과 같이 변경되어서는 안되는 값을 상수값으로 만들어서 사용하게 됩니다. 자바에서는 enum type과 static final 키워드를 통해서 이러한 상수값을 제공합니다. enum type은 자바 1.5버전이후부터 생긴 type으로써 static final로 부족한 부분을 위해 만들어진 type이라고 생각합니다. static final을 이용하여 많은 상수값이 있을 때 지정하는 것보다는 enum type을 이용해서 지정하는게 더 간편하고 성능면에서도 빠릅니다. 예를 들면 마..
오버라이딩(overriding) 슈퍼클래스(super class)에 있는 메소드를 서브클래스(sub class)에서 같은 시그니처(signature)로 재정의(overriding) 하는 것입니다. 메소드의 확장이 필요하거나 수정이 필요할 경우 사용됩니다. 오버라이딩(overriding)을 구현 할 때는 슈퍼클래스(super class)를 확장을 하는 경우와 수정을 하는 2가지의 관점이 있을 수가 있습니다. 확장을 하는 경우는 슈퍼클래스(super class)에 있는 메소드의 기능을 추가해야 하는 경우입니다. 예를 들면 현실세계에서 터치폰과 휴대폰이 있습니다. 원래 휴대폰에서 입력은 버튼입력밖에 없습니다. 하지만 그걸 확장해서 터치폰에서의 입력은 버튼입력뿐만 아니라 터치를 통한 입력을 받을 수가 있게 확장을 한 것입니다. 수정을 하는 경..
객체(object) 캐스팅(casting) 객체캐스팅이란 다형성을 구현하는 과정이라고 할 수 있습니다. 객체캐스팅을 설명하기 위해서는 다형성의 개념을 설명해야 한다고 생각합니다. 왜냐하면 다형성이 있기 때문에 객체캐스팅이 있다고 할 수 있기 때문입니다. 그래서 간단하게 설명하면 다형성은 다양한 형태를 나타내는 성질을 말하는데 객체지향에서는 논리적으로 하나의 객체를 다수의 객체타입으로 표현 가능하다는 의미입니다. 이러한 다형성을 자바에서는 객체캐스팅을 통해 구현 할 수 있습니다. 예를 들면 찌개는 끓여먹는 것입니다. 끓여먹는 것 중에는 라면, 찌개 등등 매우 많은 것들이 있고 그 중에 찌개가 포함됩니다. 즉 누군가가 "끓여먹는 것 좀 줘!" 할 때 라면을 줄 수도 있고 찌개를 줄 수도 있는 것이겠지요. 이렇게 현실세계의 객체는 다양한 특성을 가지고..
인터페이스(interface) 인터페이스는 클래스에게 특정기능을 위한 메소드들을 제공합니다. 인터페이스는 스펙배포 목적이며 통합개발실행환경을 제공하는 목적으로 쓰입니다. 인터페이스는 만들 때 는 하나의 클래스가 아닌 지금 존재하지 않는 클래스에서의 재사용까지 생각을 하면서 만들어야 합니다. 인터페이스를 현실세계에서 예를 들면 벽돌이 있습니다. 그리고 나무토막이 있습니다. 이것들은 공통적으로 쌓을 수가 있습니다. 그러면 현실세계에서는 그러한 “쌓을 수 있다”라는 말은 하나의 기능입니다. 그래서 자바에서는 그러한 것은 클래스마다 존재하는 것이 아니라, 인터페이스라는 것을 통하여 공통적으로 “쌓을 수 있다”라는 것은 표현 할 수 있습니다. 역으로 “쌓을 수 있다”를 생각해보면 벽돌과 나무토막이 나올 수가 있습니다. 그러한 현실세계를 나타내..
추상클래스(abstract class) 추상클래스는 서로 다른 유형의 클래스들의 공통된 행위를 추출하여 정의한 것입니다. 주로 다형성의 구현하기 위하여 사용이 되는데요. 현실세계를 생각하면 요리방법이라고 생각하는데요. 왜냐하면 요리방법은 현실세계에서 각각의 사람마다 다 다르기 때문입니다. 라면을 요리 할 수도 있고, 짜장면을 요리 할 수도 있습니다. 즉 요리방법은 구체화(인스턴스화)를 할 수가 없습니다. 요리 방법을 구체화 하기 위해서는 그 요리방법의 구체화된 방법이 필요합니다. 짜장면요리방법이라던가, 라면요리방법이라던가 하는 그 요리방법에 속하는 구체화된 것이 필요합니다. 이러한 추상클래스는 가상의 클래스로써 공통된 행위(클래스)들에 대해 일반화시켜 만들어지게 됩니다. 추상클래스의 하위클래스, 추상클래스를 상속받은 클래스를 구체화 클래스라 ..
다형성(polymorphism) 다형성(polymorphism)은 OOP를 구현하는데 필요한 성질의 하나로써 하나의 객체로 다수의 class type, interface type으로 표현이 가능합니다. 현실을 예로들어 벽돌을 생각하면 벽돌은 아파트를 만들 때도 쓰이고, 둑을 만들 때도 쓸 수가 있고 벽돌이라는 하나의 객체이지만 그 사용성은 매우 많습니다. 우리가 평소에 많이 먹는 커피 또한 종류가 다양하죠^^ OOP에서 다형성은 클래스를 만드는데 있어서 현실세계의 객체를 표현하는데 있어서 하나의 개념이고 방법입니다. 다형성을 구현함으로써 프로그램에서는 현실세계와 같은 하나의 객체를 용도에 따라 다 다르게 표현 할 수가 있으며, 객체를 정의한 기존에 존재하는 클래스와 인터페이스를 가져와서 써서 재사용을 하여 확장을 가능하게 합니다. 그러..
상속(inheritance)과 확장(extend) 상속은 기존에 존재하는 클래스를 재사용하기 위한 매커니즘입니다. 예를 들면 기존에 면요리레시피라는 클래스가 존재한다면 면요리레시피라는 클래스를 상속받아서 라면레시피라는 클래스로 확장 할 수 가 있습니다. 상속하는 클래스를 슈퍼클래스(super class)라고 하고 상속받는 클래스를 서브클래스(sub class)라고 합니다. 자바에서 상속은 하나의 클래스만 상속을 받을 수가 있으며 서브클래스는 슈퍼클래스의 필드와 메소드를 재사용 할 수 있습니다. 객체지향 개념에서는 Is-A relationship라고 합니다. "서브클래스는 슈퍼클래스이다", "서브클래스는 슈퍼클래스의 한 종류이다"라고 부릅니다. 앞에서 예로 사용한 라면에 비유하면 "라면은 면요리이다", 라면은 면요리의 한 종류이다"라고 할 수가 있습니다...
레퍼런스(reference) 타입 자바에는 크게 두 개의 타입이 존재합니다. 프리미티브 타입(primitive type)과 레퍼런스 타입(reference type)입니다. 컴퓨터가 읽을 수 있는 기본적인 값을 나타내기 위한 primitive데이터를 제외한 나머지 타입을 래퍼런스 타입이라고 합니다. 레퍼런스 타입은 프리미티브 타입을 기본으로 해서 만들어집니다. 레퍼런스 타입이 사람 혹은 사람의 내장이라고 한다면 프리미티브 타입은 사람과 내장을 이루고 있는 세포라고도 할 수가 있습니다. 자바에서 레퍼런스 타입과 프리미티브 타입의 가장 큰 차이점을 생각한다면 레퍼런스 값을 다룬 다는 것입니다. 레퍼런스 타입으로 선언된 변수는 참조형변수라고 불립니다. 이름이 참조형변수인 이유는 자바에서 참조형변수는 참조값을 통해 데이터에 접근하기 때문입니다...