본문 바로가기

JAVA

(10)
JAVA ) 다중 인터페이스 선언과 익명구현 객체 클래스의 상속은 단일적으로 이루어지는 반면 인터페이스를 구현하는 객체는 다중적으로 인터페이스를 선언할 수 있다. 다중 인터페이스를 구현한 객체는 implements한 인터페이스들의 추상 메서드의 실체 메서드들을 구현해야 된다. 만일 implements 한 인터페이스의 추상메서드를 하나라도 구현하지 않는다면 에러가 발생한다. 추상 메소드를 선택적으로 선언하고 싶다면, 객체를 추상 클래스(abstract)로 선언해야 된다. public class 구현 클래스명 implemnts 인터페이스 A, 인터페이스 B { // 인터페이스 A에 선언된 추상메서드 실체 메소드 선언 // 인터페이스 B에 선언된 추상메소드 실체 메소드 선언 } 인터페이스의 자동 타입 변환을 사용한 선언 방식은 두 가지가 존재한다, 일반적으로..
JAVA ) interface의 역할과 선언방법 (코드) 저번 포스팅에서 interface의 개념과 역할의 대해서 이론적인 내용만 다뤄었다, 백문이 불여일견이라고 이번엔 직접 interface를 구성하는 멤버들 각각의 선언방식과 의미 및 특징에 대해서 코드로 구현해보며 이해하려고 한다. interface를 구성하는 멤버 - 정적필드 - 추상메소드 - 디폴트메소드 - 정적메소드 // 인터페이스 public interface Annotation { // 상수 필드 public int MAX_VOLUME = 10; public int MIN_VOLUME = 0; // 추상 메소드 public abstract void turnOn(int volume); // 디폴트 메소드 default void setMute(boolean mute){ if(mute){ System...
JAVA ) interface의 역할과 선언방법 (개념) interface란 무엇인가? 자바에서 interface의 역할이란 객체의 사용 방법을 정의한 타입이다. 일반적으로 개발코드가 직접 객체를 호출하고 사용하는데, 인터페이스를 사용하게되면 개발코드가 인터페이스 메소드를 호출하게 되고 인터페이스 메소드가 객체를 호출해서 개발코드로 리턴해주게된다. 즉 인터페이스는 개발코드와 객체가 서로 통신하는 접점 역할을 하는 것이다 그럼 왜 굳이 인터페스를 개발코드와 객체 사이 접점으로 사용하는 걸까? 이유는 개발 코드를 수정하지 않고 사용하는 객체를 변경 할 수 있도록 하기 위해서이다 한번에 이해가 되질 않기에 예시를 가져와 보았다. 출처: https://limkydev.tistory.com/197 서울시는 밤길 여성들의 안전한 귀가를 위해 30억을 투입해 1000개 유..
JAVA ) 생성자의 중복 초기화를 축약시키는 this()클래스 생성자,메소드에서 매개값으로 받은 인스턴스를 해당 클래스 필드 변수에 대입하여 초기화 하는 방법에 대해서 몇 주전에 다뤄본적이 있다, this.매개변수 = 필드변수; 하지만 해당 개념만 숙지한뒤 모든것을 아는 것 처럼 넘어 갔지만 this클래스의 기능을 간과하고 있었던것 같다.. 오늘은 간과했던 this의 또 다른 기능에 대해서 포스팅 해볼려고 한다. 메소드가 오버로딩이 가능하듯이 생성자또한 오버로딩이 가능하다, 이때 생성자 오버로딩이 많아질 경우 생성자 간의 중복된 코드가 발생할 수 있다. 매개 변수의 수만 달리 하고 필드 초기화 내용이 비슷한 생성자에서 이러한 현상을 많이 볼 수 있다 이 경우에 필드 초기화를 담당하는 기능은 한 생성자에만 집중적으로 작성하고 나머지 생성자는 초기화 내용을 가지고 있는..
JAVA ) 추상 클래스와 추상 메소드 추상적, 구체성이 없이 사실이나 현실에서 멀어져 막연하고 일반적인 것 그렇다면 추상 클래스는 뭘 의미하는 거지? 추상 클래스도 위 개념과 동일하다 볼 수 있다. 추상 클래스는 실체 하지 않고 추상적인 형태를 가지고 있기 때문이다! 좀 더 자세하게 들어가 보자면 객체들의 공통되는 특성을 추상적으로 정의한 클래스라 볼 수 있다. 예를 들어 새, 물고기, 고양이 등의 실체들의 공통되는 특성을 추출해보면 동물이라는 공통점이 있다, 실체 된 것이기보단 실체들의 공통된 특성을 가지고 있는 것이 추상적인 것이라 볼 수 있다. 여기서 실체 하는 것이란 실체 클래스를 의미한다, 실체 클래스란 우리가 일반적으로 사용하는 필드, 생성자, 메서드로 구성된 클래스를 말한다, 즉 추상 클래스란 실체 클래스 안에서 공통되는 필드와..
JAVA 필드의 다향성 ( 예제 프로그램 작성 다향성이란 동일한 타입을 사용하지만 다양한 결과가 나오는 성질을 말한다. 주로 필드의 값을 다양화함으로써 실행 결과가 다르게 나오도록 구현하는데 필드의 타입은 변환이 없지만 실행도중에 어떤 필드로 저장하느냐에 따라 실행 결과가 달라진다. 이것이 필드의 다향성이다. 필드의 다향성을 알아볼 프로그램을 작성해보자. 프로그램설명 1. 자동차 타이어 4개의 수명을 선언 2. 자동차 타이어가 회전 반복 3. 자동차 타이어가 터질 시 다른 타이어로 교체 tip : 생성자 자동형변환, 오버로드 사용 프로그램 실행순서 및 이벤트 설명 1.메인에서 Car의 런메소드 실행 2. Run메소드에서 Tire.roll 실행 3. roll을 실행후 Run메소드에게 트루값 리턴 4. 값이 flase가 될때까지 2번 반복 5. roll..
JAVA 상속관계 자동 타입 변환과 다향성 기본 타입의 변환에 대해서는 java공부 초반부에 학습했을 것이다, 이번에는 기본 타입형 형변환이 아닌, 클래스 타입의 변환을 배워 보자 한다. 기본적으로 클래스 타입의 변환은 상속관계에 있는 클래스 사이에서만 발생한다. 부모클래스 타입으로 선언된 객체는 부모 클래스의 필드,메소드만 사용이 가능하다. 단 자식클래스가 부모클래스의 메소드를 오버로드(재정의) 하였다면 부모타입으로 선언된 객채라도 자식클래스에서 재정의 된 필드와 메소드를 사용할 수 있다. 그 외 오버로드 되지 않은 필드와 메소드는 사용이 불가능하다. 하지만 클래스관계의 자동타입 변환을 사용한다면 부모클래스 타입으로 선언된 객체도 부모클래스와 상속자인 자식클래스 둘 다 모두 사용 가능하다, 위와 같은 개념은 객체지향 프로그램이 추구하는 다향성과..
JAVA @어노테이션이란? 설명하기 앞서 어노테이션을 보다 쉽게 이해를 돕기위해서 메타데이터란 무엇인지 알아보자 메타데이터란? 메타데이터란 데이터의 대한 속성정보이다, 데이터의 대한 데이터로서 하위 레벨 데이터를 설명 및 기술하는 데이터라고 보면 된다. 도서관을 예시로 들어보자면 표제,저자,주제명,분류기호 등이 포함되어 있는 목록이 메타데이터의 속한다 메타데이터를 어느정도 이해하였다, 그렇다면 어노테이션은 무엇인가? 어노테이션이란 메타데이터라고 볼 수 있다. 프로그램 실행 관점에서보면 프로그램이 처리할 메인 데이터가 아니라 실행과정에서 데이터를 어떻게 처리할것인지 알려주는 서브 데이터라고 볼 수 있는 것 이다. 직접적으로 사용해보기 전에 어노테이션의 용도와 사용방식을 알아보자. 어노테이션의 크게 세 가지 용도로 사용된다. 1. 코..