목록JAVA (27)
코딩 이야기

인터페이스는 개발 코드와 객체가 서로 통신하는 접점 역활을 합니다. 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객체의 메소드를 호출 시킵니다. 그렇기 때문에 개발 코드는 객체의 내부 구조를 알 필요가 없고 인터페이스의 메소드만 알고 있으면 됩니다. 개발 코드를 직접 객체의 메소드에 호출하지 않고 중간에 인터페이스를 두는 이유는 개발코드를 수정하지 않고 사용하는 객체를 변경할 수 있도록 하기 위해서입니다. 인터페이스는 하나의 객체가아니라 여러 객체들과 사용이 가능하므로 어떤객체를 사용하느냐에 따라서 실행 내용과 리턴값이 다를 수 있습니다. 코드 변경 없이 실행 내용과 리턴값을 다양화 할 수 있다는 장점을 가지게 됩니다. 인터페이스 선언 인터페이스는 '~.java' 형태의 소스 파일로 작성되고 ..

객체를 직접 생성 할 수 있는 클래스를 실체 클래스라고 한다면 이 클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상클래스라고 합니다. 추상클래스와 실체 클래스는 상속관계이며 추상이 부모 실체가 자식관계이다. 실체클래스는 추상클래스의 모든 특성을 물려받고, 추가적인 특성을 가질 수 있다. 여기서 말하는 특성은 필드와 메소드이다. 실체클래스에서 공통되는 필드와 메소드를 따로 선언한 클래스를 만들 수 있는데 이것이 추상클래스이다. 추상 클래스의 용도 실체 클래스의 공통적인 특성(필드, 메소드)를 뽑아내어 추상 클래스로 만드는 이유는 두 가지가 있습니다. 1. 공통된 필드와 메소드의 이름을 통일할 목적 데이터와 기능이 모두 동일함에도 불구하고 이름이 다르다보니, 객체마다 사용방법이 달라 추상 클래스에 필..
객체 타입 확인 강제 타입 변환은 자식 타입이 부모타입으로 변환되어 있는 상태에서만 가능하기 때문에 다음과 같이 처음부터 부모 타입으로 생성된객체는 자식 타입으로 변환할 수 없습니다. Parent parent = new Parent(); Child child = (child) parent; // 강제 타입 변환을 할 수 없음 객체가 어떤 클래스의 인스턴스 인지 확인하기 위해 instanceof 연산자를 사용합니다. instanceof 연산자의 좌항에는 객체가 오고 우항에는 타입이 오는데, 좌항의 객체가 인스턴스이면, 즉 우항의 타입으로 객체가 생성되었다면 true를 리턴하고 그렇지 않으면 false를 리턴합니다. boolean result =좌항(객체) instanceof 우항(타입) instanceof..
타입변환과 다형성 타입변환을 이용하면 객체 지향 프로그래밍의 중요한 특징인 다형성을 구현할 수 있습니다. 다형성은 사용 방법은 동일하지만 다양한 객체를 이용해서 다양한 실행결과가 나오도록 하는 프로그램입니다. 다형성을 구현하려면 매소드 재정의와 타입변환이 필요합니다. 자동 타입 변환 기본타입과 같이 클래스도 타입변환이 있는데 클래스의 변환은 상속 관계에 있는 클래스 사이에서 발생합니다. 자식은 부모타입으로 자동 타입 변환이 가능합니다. 자동 타입 변환은 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것을 말합니다. 부모타입 변수 = 자식타입; ↑ ↓ ← 자동 타입 변환 예를 들어 Cat 클래스로부터 Cat 객체를 생성하고 이것을 Animal 변수에 대입하면 자동 타입 변환이 일어납니다. Cat c..