인터페이스: 9개의 글
[Java] 추상클래스와 인터페이스 차이 추상클래스 (abstract class) - 정의 : 한 개 이상의 추상메서드를 가지는 클래스 - 목적 : 추상메서드는 선언만되며 구현이 되지 않은 불완전한 메서드이므로 객체로 생성되지 않는다. 구분 일반 클래스와 추상 클래스의 차이 예시 일반 클래스 세부적이고, 구체적 고양이, 사자, 강아지 추상 클래스 추상적 고양이과, 개과 추상메서드 - 정의 : 내용이 없는 메서드, 구현(정의)는 하지 않고 선언만 한 메서드 - 목적 : 메서드의 내용이 너무 일반적인 내용이므로 부모 클래스에서 구체화하여 정의할 필요가 없을 경우, 추상메서드로 선언만하고 상속받은 자식 클래스에서 재정의하도록 할 때 사용 추상 클래스는 반드시 하나 이상의 추상메서드를 가지며, 객체를 생성할 수..
추상 클래스내 함수 구현 처럼 Interface 클래스 내에 함수를 선언 및 구현할 수 있도록 한다. Interface 구현 클래스에서 Override 할 수 있다. 왜? 나왔을까? "하위 호환성" 때문에 등장 인터페이스에 신규 함수 선언시 기존에 상속받아 구현하던 클래스에 모두 빨간불이 들어와 직접 구현을해야하는 상황을 방지하기 위해 등장함. 간단 코드로 보기 public class DefaultClass{ public interface TestInterface { // 선언 후 구현까지 해야한다. default void defaultFunction(){ System.out.println("this is default function"); } } private static class SubClass11..
추상메서드와 인터페이스 1. 공통점1) 둘 다 모두 추상 메소드라는 것을 가진다. 구현 클래스에서는 반드시 만들어야만하는 강제성을 가진다. 또한 추상 메소드는 컴파일러를 속인다. 추상 클래스는 변수를 인터페이스나 부모 클래스 타입으로 보았을 때 아무런 호출에 문제를 일으키지 않는다. 따라서 컴파일러는 실제로 메소드가 어떻게 동작할지는 모르고, 아무 문제 없이 실행해준다. 즉 컴파일러를 속여서 내가 원하는 동작을 마음대로 조종하게 한다는 것이다. 2) 둘 다 객체 생성은 불가능하고, 타입으로만 사용된다.추상 클래스와 인터페이스 둘 다 객체의 생성이 목적인 클래스가 아니라. 변수나, 파라미터, 리턴 타입, 자료구조를 유연하게 쓰기 위한 도구이다. 2. 차이점1) 인터페이스는 스펙이나 원하는 기능을 정의하고자..
인터페이스 1. 인터페이스란?인터페이스는 일종의 추상클래스이다. 인터페이스는 추상클래스처럼 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아서 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다.오직 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않는다.추상클래스를 부분적으로만 완성된 '미완성 설계도'라고 한다면, 인터페이스는 구현된 것은 아무 것도 없고 밑그림만 그려져 있는 '기본 설계도'라 할 수 있다. 인터페이스도 추상클래스처럼 완성되지 않은 불완전한 것이기 때문에 그 자체만으로 사용되기 보다는 다른 클래스를 작성하는데 도움 줄 목적으로 작성된다. cp.) 인터페이스란 무엇인가사전적 의미는 어떤 객체와 객체의 중간에 놓이는 것..
인터페이스와 다형성 1. 인터페이스와 다형성 인터페이스는 이를 구현한 클래스의 조상이라 할 수 있으므로, 해당 인터페이스의 타입의 참조변수로 이를 구현한 클래스의 인스턴스를 참조할 수 있다. 인터페이스 타입으로 형변환도 가능하다.(특정한 인터페이스를 구현하고 있는 클래스가 있을 때 이 클래스의 데이터 타입으로 인터페이스를 지정 할 수 있다.)Fightable t = (fightable) new Fighter();또는Fighetable f = new Figher();인터페이스 Fightable을 클래스 Fighter가 구현했을 때, Fighter 인스턴스를 Fightable타입의 참조변수로 참조하는 것이 가능하다.Fightable 타입의 참조변수로 인터페이스 Fightable에 정의된 멤버들만 호출이 가능..
인터페이스의 이해 1. 인터페이스의 이해 서두먼저 인터페이스를 이해하기 위해서는 다음의 두 가지 사항을 반드시 염두에 두고 있어야 한다.1) 클래스를 사용하는 쪽(User)과 클래스를 제공하는 쪽(Provider)이 있다.2) 메서드를 사용(호출)하는 쪽(User)에서는 사용하려는 메서드(Provider)의 선언부만 알면 된다. (내용은 몰라도 된다.) class A{public void method( B b){b.method();}} class B {public void methodB(){System.out.println("methodB()");}} class InterfaceTest{public static void main(String args[]){A a = new A();a.methodA(new..
상속, 인터페이스에 의한 다형성(polymorphism) 1. 지연 바인딩 보통은 변수의 타입은 이 변수가 참조하는 개체의 클래스와 일치한다. ChessPiece bishop = new ChessPiece(); 위에서 bishop 변수는 ChessPiece 클래스를 실체화시킴으로써 생성되는 객체를 가리키는데 사용될 수 있다.이렇게 변수의 타입과 이 변수가 참조하는 객체가 호환 가능해야 하나 정확하게 일치할 필요는 없다. 참조 변수와 이 변수가 참조하는 객체와의 관계는 더 유연하다. 다형성(polymorphism)이란 용어는 "여러 형태를 갖는 것"으로 정의된다.다형 참조(polymorphic reference)는 때에 따라 다른 타입의 객체를 참조할 수 있다는 것이다. 다형 참조를 통해서 호출되는 특정 ..
Enumeration 인터페이스 정리 Enumeration 인터페이스는 객체들의 집합(Vector)에서 각각의 객체들을 한순간에 하나씩 처리할 수 있는 메소드를 제공하는 켈렉션이다. [JAVA/Java] - [JAVA] Vector 클래스 정리 인터페이스이므로, 직접 new 연산자를 이용하여 객체를 생성할 수 없으며, Enumeration 인터페이스에 선언된 메소드는 그 인터페이스를 사용하는 클래스로 구현해서 사용해야만 한다. * Enumeration 인터페이스 메소드 Enumeration 메소드 설명 boolean hasMoreElements() Vector로 부터 생성된 Enumeration의 요소가 있으면 true, 아니면 false 반환Object nextElement() Enumeration 내..
상속(extends), 추상 클래스(abstract), 인터페이스(implement) 객체지향을 조금이라도 공부한 사람들은 상속, 추상 클래스, 인터페이스에 대해 계속적으로 들어봤을 것이다. 이 개념들이 객체 지향 프로그래밍을 하는데 중요한 개념이기 때문이다.이것들은 어플리케이션을 설계하는데 공통된 부분을 묶어 정의해주고, 구조화 해주며, 객체로 활용할 수 있도록 도와준다.이것들에 대한 개념 및 예제들은 많이 찾아볼 수 있으므로, 여기서는 간단히 정리하겠다. 1. 상속 (extends) 상속은 기존의 클래스로 부터 새로운 클래스를 유도하는 과정이다. 쉽게 말해서 부모 클래스를 extends로 상속받아 자식 클래스에서 내 것처럼 사용할 수 있는 것이다. 시스템을 설계하다보면, 공통된 부분으로 인하여 중복되..