728x90 반응형 SMALL 공부60 [JAVA] 자바 - 여러 인터페이스 구현하기, 인터페이스의 상속 여러 인터페이스 구현 자바의 인터페이스는 구현 코드가 없으므로 하나의 클래스가 여러 인터페이스를 구현할 수 있습니다. (자바에서 클래스는 다중 상속이 가능하지 않습니다. - Diamond Problem) 디폴트 메서드가 중복되는 경우는 구현하는 클래스에서 재정의 하여야 합니다. 여러 인터페이스를 구현한 클래스는 인터페이스 타입으로 형 변환되는 경우 해당 인터페이스에 선언된 메서드만 사용 가능합니다. Buy.java public interface Buy { void buy(); default void order() { System.out.println("buy order"); } } Sell.java public interface Sell { void sell(); default void order() {.. 2021. 12. 14. [JAVA] 자바 - 인터페이스의 여러가지 요소 상수 모든 변수는 상수로 변환됩니다. (public static final) double PI = 3.14; int ERROR = -999999; 추상 메서드 모든 선언된 메서드는 추상 메서드 (public abstract) 디폴트 메서드 (자바 8 이후) 구현을 가지는 메서드, 인터페이스를 구현하는 클래스들에서 공통으로 사용할 수 있는 기본 메서드입니다. default 키워드를 사용합니다. default void description() { System.out.println("정수 계산기를 구현합니다."); myMethod(); } 구현하는 클래스에서 재정의 할 수 있습니다. @Override public void description() { System.out.println("CompleteCalc에.. 2021. 12. 3. [JAVA] 자바 - 인터페이스가하는 일과 다형성 구현 인터페이스가 하는 일 클래스나 프로그램이 제공하는 기능을 명시적으로 선언합니다. 일종의 클라이언트 코드와의 약속이며 클래스나 프로그램이 제공하는 명세입니다. 클라이언트 프로그램은 인터페이스에 선언된 메서드 명세만 보고 이를 구현한 클래스를 사용할 수 있습니다. 어떤 객체가 하나의 인터페이스 타입이라는 것은 그 인터페이스가 제공하는 모든 메서드를 구현했다는 의미입니다. 인터페이스를 구현한 다양한 객체를 사용합니다. (다형성) 예) JDBC 인터페이스 인터페이스를 활용한 다형성 구현 (dao 구현하기) 인터페이스와 다형성 하나의 인터페이스를 여러 객체가 구현하게 되면 클라이언트 프로그램은 인터페이스의 메서드를 활용하여 여러 객체의 구현을 사용할 수 있습니다. (다형성) 인터페이스를 활용한 dao구현하기 DB.. 2021. 12. 3. [JAVA] 자바 - 인터페이스(interface) 인터페이스란? 모든 메서드가 추상 메서드로 선언됩니다. public abstract 모든 변수는 상수로 선언됩니다. interface 인터페이스 이름 { public static final float pi = 3.14F; public void makeSomething(); } 자바 8부터 디폴트 메서드(default method)와 정적 메서드(static method) 기능의 제공으로 일부 구현 코드가 있습니다. 인터페이스 정의와 구현하기 선언된 메서드들은 당연히 구현코드가 없습니다. Calc.java public interface Calc { double PI = 3.14; int ERROR = -9999999; int add(int num1, int num2); int substract(int nu.. 2021. 12. 1. [JAVA] 자바 - final예약어 final 변수 : 값이 변경될 수 없는 상수 public static final double PI = 3.14; final메서드 : 하위 클래스에서 재정의할 수 없는 메서드 final클래스 : 상속할 수 없는 클래스 여러 자바 파일에서 사용하는 상수 값 정의 Define.java public class Define { public static final int MIN = 1; public static final int MAX = 999999; public static final double PI = 3.14; public static final String GREETING = "Good Morning"; public static final int MATH_CODE = 1001; public static.. 2021. 12. 1. [JAVA] 자바 - 추상 클래스의 응용 (템플릿 메서드 패턴) 템플릿 메서드 추상 메서드나 구현된 메서드를 활용하여 코드의 흐름(시나리오)을 정의하는 메서드입니다. final로 선언하여 하위 클래스에서 재정의 할 수 없게 합니다. (흐름을 가지고 있기 때문에) 프레임워크에서 많이 사용되는 설계 패턴 추상 클래스로 선언된 상위 클래스에서 템플릿 메서드를 활용하여 전체적인 흐름을 정의하고 하위 클래스에서 다르게 구현되어야 하는 부분은 추상 메서드로 선언하여 하위 클래스에서 구현하도록 합니다. final 키워드가 변수로 쓰이면 상수, 메서드에 쓰이면 재정의를 못하는 메서드, 클래스에 쓰이면 상속이 안되는 클래스 템플릿 메서드 예제 Car.java public abstract class Car { public abstract void drive(); public abstr.. 2021. 12. 1. [JAVA] 자바 - 추상 클래스란? 구현 코드 없이 메서드의 선언만 있는 추상 메서드(abstract method)를 포함한 클래스입니다. 메서드 선언(declaration): 반환 타입, 메서드 이름, 매개변수로 구성합니다. 메서드 정의(definition): 메서드 구현과 동일한 의미 구현부를 가집니다. 예시 int add(int x, int y); // 선언 int add(int x, int y){} // 구현부 o, 추상메서드 x abstract 예약어를 사용합니다. 추상 클래스는 new할 수 없습니다. (인스턴스화 할 수 없습니다.) 추상 클래스 구현하기 메서드에 구현 코드가 없으면 abstract로 선언합니다. abstract로 선언된 메서드를 가진 클래스는 abstract로 선언합니다. 모든 메서드가 구현된 클래스라도 abst.. 2021. 12. 1. [JAVA] 자바 - 다운 캐스팅과 instanceof 다운 캐스팅 업 캐스팅된 클래스를 다시 원래의 타입으로 형 변환입니다. 하위 클래스로의 형 변환은 명시적으로 해야 합니다. Customer vc = new VIPCustomer(); // 묵시적 VIPCustomer vCustomer = (VIPCustomer)vc; // 명시적 instanceof를 이용하여 인스턴스의 형 체크 원래의 인스턴스의 형이 맞는지 여부를 체크하는 키워드입니다. 맞으면 true 아니면 false를 반환합니다. AnimalTest.java import java.util.ArrayList; class Animal { // 공통적으로 사용하는 메서드는 상위 클래스에 선언합니다. public void move() { System.out.println("동물이 움직입니다."); } } .. 2021. 11. 30. [JAVA] 자바 - IS-A 관계, HSA-A 관계 IS-A관계(is a realationship : inheritance) 일반적인 개념과 구체적인 개념과의 관계 상위 클래스 : 하위 클래스보다 일반적인 개념(예 : Employee) 하위 클래스 : 상위 클래스보다 더 구체적인 개념(예 : Engineer, Manager, ...) 상속은 클래스 간의 결합도가 높은 설계입니다. 상위 클래스의 수정이 많은 하위 클래스에 영향을 미칠 수 있습니다. 계층구조가 복잡하거나 계급(hierarchy)이 높으면 좋지 않습니다. HSA-A관계(composition) 클래스가 다른 클래스를 포함하는 관계(변수로 선언)입니다. 코드 재사용의 가장 일반적인 방법입니다. Student가 Subject를 포함하는 예제와 같은 경우입니다. Library를 구현할 때 ArrayL.. 2021. 11. 30. 이전 1 2 3 4 5 6 7 다음 728x90 반응형 LIST