Programming (477) 썸네일형 리스트형 인터페이스(8) - 인터페이스의 타입 변환과 다형성 1 상속 파트에서 우리는 다형성에 대해서 다루었습니다. 하나의 타입에 대입되는 인스턴스의 종류에 따라서, 그 실행 결과가 달라지는 성질을 확인했죠(부모 타입에 어떤 자식 객체를 대입하느냐에 따라 달라지는 결과). 인터페이스 타입에 구현 클래스 인스턴스가 어떤 것이 적용되느냐에 따라서도 그 실행 결과가 달라지는 것을 확인했습니다. 물론 부모-자식과 인터페이스-구현 간의 관계는 계층적 차이가 있어서 엄격하게는 다른 개념이지만, 동일한 형질을 통해서 다양한 결과를 구현할 수 있다는 점은 동일합니다. 실제 사례를 예로 들어서, 인터페이스 다형성에 기반한 구조 설계를 살펴보겠습니다. 우선 XXX라는 클래스를 사용하여 프로그램 개발을 진행했다고 가정해 보겠습니다. 그런데, XXX클래스가 전반적으로 결함이 있어서 메서드.. [CSS] 1. CSS의 기본 개념(4) - Cascading CSS에서 C는 Cascading의 줄임말입니다. 단어 그대로, 계층성을 가진다는 의미를 갖죠. 스타일 시트를 형용하는 가장 중요한 단어로 사용될 만큼, 이 계층 구조는 중요한 의미를 갖습니다. 근본적으로 웹 문서의 요소에 스타일을 적용할 때, 우선순위를 두고 적용된다는 것이지요. 스타일을 적용하다 보면 여러 가지 이유로 다양한 스타일이 적용될 때 충돌이 발생할 수 있습니다. 이럴 때 스타일 적용 규칙을 설정하는 방식은 우선순위 / 상속이 있습니다. 우선순위는 말 그대로 중요도와 적용 범위의 기준을 따른다는 의미고, 상속은 태그 간의 포함 관계에 따라서 부모 요소에서 자식 요소로 전달되는 방식을 뜻합니다. 바로 와닿지 않으니, 상세히 살펴보도록 하겠습니다. ○ 스타일 우선순위 말 그대로 스타일 적용에 있.. 인터페이스(7) - 인터페이스의 구현과 사용 2 : 디폴트, 정적 메서드 ○ 인터페이스의 디폴트 메서드 사용 디폴트 메서드는 인터페이스의 모든 인스턴스가 자동으로 보유하게 되는 말 그대로 '기본' 메서드입니다. 별다른 오버라이드 없이도, 기본적인 추상 메서드 구현만 잘 이루어졌다면 특별한 구현 클래스에서의 작업 없이 사용이 가능하죠. 실행 코드는 이미 인터페이스 상에 선언이 되어 있습니다. 물론, 엄격하게 구조를 따지면 인터페이스 상에 실행 코드가 정의되어 있긴 하지만 - 실제로는 구현 클래스 인스턴스가 보유하고 있는 구조라고 생각해야 합니다. 그리고 위의 문장에서 구현 클래스의 인스턴스가 보유하는 메서드라고 말했습니다. 이 부분을 강조하는 이유는 무엇일까요? 그건 인터페이스에 실행 코드가 선언되어 있긴 하지만, 반드시 구현 클래스 인스턴스를 통해서만 실행이 가능한 메서드이기.. 인터페이스(7) - 인터페이스의 구현과 사용 1 : 추상 메서드 사용 지금까지 인터페이스와 관련해 여러 가지 원리와 기본 규칙들에 대해서 알아보았습니다. 본격적으로 인터페이스에서 선언한 내용을 구현하고, 실제 실행 코드에서 사용하는 방식에 대해서 살펴보도록 하겠습니다. 우선, 기본적인 내용을 다시 한번 되짚어 보도록 하겠습니다. 인터페이스를 사용하기 위해서는, 우선 인터페이스 타입의 변수를 선언하고 여기에 구현 클래스의 인스턴스를 대입합니다(만일 익명 객체 형태로 구현한다면 인터페이스 타입). 당연하지만 인터페이스 타입의 변수도 참조 타입이므로 구현 클래스 인스턴스의 메모리 주소를 참조하게 됩니다. RemoteControl rc = new Television(); RemoteControl rc2; rc2 = new Audio(); 참고로 인터페이스는 사용 범위에 있어서 클.. [CSS] 1. CSS의 기본 개념(3) - 기본 선택자 우선 본 내용에 들어가기 앞서서, 용어 정리를 조금 하고 넘어가겠습니다. 우리가 흔히 '태그'라고 사용하는 것과 '요소(element)'라고 사용하는 경우가 있습니다. 예를 들어 어떠한 스타일을 '태그'에 적용했다고 표현하기도 하고, '요소'에 적용했다고 하는 경우가 있죠. 정확히는, "스타일을 요소에 적용했다."는 표현이 맞는 표현입니다. 엄격하게 이야기하면, 태그는 말 그대로 와 같은 태그 자체를 표현하는 것이고, 요소는 아래와 같이 태그 사이에 포함된 텍스트를 모두 포함하는 범위이기 때문이죠. 앞으로는 스타일을 요소에 적용한다는 표현이 많을 것이니, 미리 정리하고 가겠습니다. 태그 사이의 텍스트 예시입니다. ○ 전체 선택자(universal selector) 이름에서 알 수 있듯이, 전체 선택자는 .. [CSS] 1. CSS의 기본 개념(2) - 스타일 시트란? CSS라는 단어 자체가 Cascading Style Sheet의 약자입니다. 캐스캐이딩(cascading)의 의미는 이후에 따로 살펴볼 예정이니 차치하고, 여기서 말하는 '스타일 시트'의 의미는 무엇일까요? 사실 어찌 보면 굉장히 간단한 의미입니다. 우리가 앞서 기본 CSS 스타일 지정 양식을 살펴보았는데요, 실제 웹 문서상에 적용되는 CSS 파일을 살펴보면 엄청나게 많은 스타일들이 적용되어 있을 것입니다. 이렇게 스타일 적용 원칙을 한 군데 모아둔 것을 스타일 시트라고 칭하게 됩니다. 웹 문서(html)에 적용하게 되는 스타일 시트에는 몇 가지 유형이 있습니다. 기본적으로 [브라우저 기본 스타일]이 있고, 우리가 앞으로 CSS 포맷으로 직접 작성하게 되는 [사용자 스타일]이 존재하죠. 이 각각의 스타일.. 인터페이스(6) - 인터페이스 구현 : 다중 인터페이스 구현 지금까지는 일단 한 개의 인터페이스를 통해, 하나의 객체를 호출하는 형태로 연습해 왔습니다. 하지만, 부동산 거래를 할 때 하나의 매물에 여러 개의 부동산이 중개를 진행하듯이 - 여러 개의 인터페이스가 다중으로 하나의 구현 클래스를 호출하게 되는 경우도 있습니다. 하나의 클래스가 다중의 인터페이스를 구현하게 된다는 의미지요. 만일 하나의 클래스에 두 개의 인터페이스인 '인터페이스1'과 '인터페이스2'가 모두 구현된다고 가정하면, 아래와 같은 형태로 구현 클래스가 선언되어야 합니다. 물론 인터페이스1과 2의 모든 추상 메서드를 구현해야만 합니다. 하나라도 구현이 빠지게 되면 해당 구현 클래스는 추상 클래스로서 선언되어야 하는 것은 기본 구현 클래스에서의 원칙과 동일합니다. public class 구현클래스.. 인터페이스(5) - 인터페이스 구현 : 익명 객체의 구현 앞선 아티클에서 우리는 RemoteControl이라는 인터페이스를 생성하고, 이를 구현하는 Television과 Audio라는 구현 클래스를 만들었습니다. 설명했다시피, 이 인터페이스를 구현하는 구현 클래스를 만들고 - 실행 클래스에서 구현 객체 인스턴스를 생성해 실행하는 형태를 취했습니다. 인터페이스(4) - 인터페이스 구현 기본 원리 인터페이스는 앞서 설명했듯이, 개발 코드에서 인터페이스 메서드를 호출하고 그 인터페이스가 객체의 메서드를 호출하는 구조입니다. 인터페이스는 중개자의 역할을 하기 때문에, 실제 구현 nozeroslope.tistory.com public class ExampleMain { public static void main(String[] args) { RemoteControl r.. 이전 1 ··· 41 42 43 44 45 46 47 ··· 60 다음