Programming Language56 [자바] 인터페이스 - (2) 요소 - 디폴트 메서드와 정적 메서드 인터페이스의 활용성을 높이기 위해 사용. 디폴트 메서드 - 인터페이스에서 구현 코드까지 작성한 메서드 정적 메서드 - 인스턴스 생성과 상관없이 사용할 수 있는 메서드 - 디폴트 메서드 인터페이스에서 구현하지만, 이후 인터페이스를 구현한 클래스가 생성되면 그 클래스에서 사용함 예약여 default를 사용 사용 예시 지난 계산기 프로그램에 다음을 추가해보자. 일반 함수처럼 작성하고 앞에 default만 붙여주면 된다. package first_project; public interface Calc { ... default void description() { System.out.println("정수 계산기를 구현합니다."); } } package first_project; p.. 2021. 10. 26. [자바] 인터페이스 - (1) 구현과 다형성 인터페이스란? 추상 메서드와 상수로만 이루어져 있음. 구현 코드가 없기 때문에 당연히 인터페이스로 인스턴스를 생성할 수 없음 그럼 인터페이스는 어떻게 사용하는 것인가? 인터페이스를 구현하는 클래스는 implements 예약어를 사용한다. 이때 1. 인터페이스에 포함된 추상 메서드를 구현하거나 2. 이 클래스를 추상 클래스로 만들거나 둘 중에 하나를 택해야 오류가 발생하지 않는다. 인터페이스의 형 변환 상속 관계에서 하위 클래스는 상위 클래스 자료형을 묵시적 형 변환을 할 수 있었던 것과 마찬가지로 인터페이스를 구현한 클래스는 인터페이스 형으로 형 변환이 가능 인터페이스의 역할 인터페이스를 구현한 클래스가 어떤 기능의 메서드를 제공하는지 명시하는 것입니다. 인터페이스와 다형성 package first_pr.. 2021. 10. 26. [자바] 추상 클래스 - (2) 템플릿 메서드 - 추상 클래스의 활용 추상 클래스를 활용하여 템플릿 메서드를 구현할 수 있다. 이는 일종의 디자인 패턴으로 봐도 무방하다. 아래의 run 함수가 템플릿 메서드를 의미한다. 템플릿, 말그대로 하나의 틀을 만드는 과정이다. run() 안에는 자동차의 시동을 키고~운전하여~시동을 끄는 과정이 순서대로 호출되고 있다. package first_project; public abstract class Car { public abstract void drive(); public abstract void stop(); public void startCar() { System.out.println("시동을 켭니다."); } public void turnOff() { System.out.println("시동을 끕니다.".. 2021. 10. 24. [자바] 추상 클래스 - (1) 사용법과 구현 - 추상 클래스의 문법 추상 클래스는 항상 추상 메서드를 포함한다. 추상 메서드는 구현 코드가 없기 때문에 몸체(body)를 가지고 있지 않다. ex) 몸체가 있는 메서드 int add(int x, int y){ return x+y; // {} 안의 내용이 함수 몸체 } 추상 메서드는 몸체(구현부) 없이 선언만 하며 abstract 예약어를 사용하고 { } 대신 ;를 쓴다. abstract int add(int x, int y); * 빈 { }는 추상 메서드라고 안한다. { }를 쓴것만으로도 메서드를 구현한 셈이 되어버림 - 추상 메서드 구현 아래와 같이 구현부를 작성하지 않은 메서드인 display(), typing()은 추상 메서드라는 의미의 abstract를 붙여줘야 오류가 발생하지 않음. 두 메서.. 2021. 10. 24. [자바] 다형성 - (2) 다형성의 활용과 다운 캐스팅, instanceof - 다형성 활용 일반 고객과 VIP 고객 사이의 중간 등급 만들기 GOLD 고객의 조건 - 제품을 살 때 10% 할인 - 보너스 포인트를 2% 적립 - 담당 전문 상담원 없음 결과는 다음과 같다. package first_project; public class GoldCustomer extends Customer{ double saleRatio; public GoldCustomer(int customerId, String customerName) { super(customerId, customerName); customerGrade = "GOLD"; bonusRatio = 0.02; saleRatio = 0.1; } @Override public int calcPrice(int price) { bonus.. 2021. 10. 23. [자바] 다형성 - (1) 정의와 활용 예시 코드 앞서 배웠던 묵시적 클래스 형 변환과 가상 메서드를 바탕으로 다형성을 이해할 수 있다. - 다형성이란? 하나의 코드가 여러 자료형으로 구현되어 실행하는 것 - 다형성 코드 예시 package first_project; class Animal{ public void move() { System.out.println("animal moves."); } } class Human extends Animal{ public void move() { System.out.println("A man walks."); } } class Tiger extends Animal{ public void move() { System.out.println("A tiger runs."); } } class Eagle extends A.. 2021. 10. 23. 이전 1 2 3 4 5 6 7 8 ··· 10 다음