반응형 Programming Language/Java20 [자바] 제네릭 - 제네릭 프로그래밍이란? 어떤 값이 하나의 참조 자료형이 아닌 여러 참조 자료형을 사용할 수 있도록 프로그래밍 하는 것 - 제네릭 사용법 제네릭에서는 여러 참조 자료형을 사용해야 하는 부분에 Object가 아닌 하나의 문자로 표현함. ex) public class GenericPrinter 여기서 이 T를 자료형 매개변수라고 부르고 나중에 클래스를 사용할 때 이 T위치에 실제로 사용할 자료형을 지정. - 자료형 매개변수 T와 static static 변수나 메서드는 인스턴스 생성없이 클래스 이름으로 호출 가능함. static 변수는 인스턴스 변수 생성 이전에 생성. 또한 static 메서드에서는 인스턴스 변수를 사용할 수 없음. 그런데 T의 자료형이 정해지는 순간은 제네릭 클래스의 인스턴스가 생성되는 .. 2021. 10. 26. [자바] 인터페이스 - (3) 활용하기 - 한 클래스가 여러 인터페이스를 구현 인터페이스는 구현 코드나 멤버 변수를 가지지 않기 때문에 여러 개를 동시에 구현할 수 있음. 두 인터페이스에 이름이 같은 메서드가 선언되었다고 해도 구현은 클래스에서 이루어지므로, 어떤 메서드를 호출해야 하는지 모호하지 않기 때문임. (* 상속은 한번에 여러 개 상속 받기 불가능) 예시 package first_project; public interface Buy { void buy(); } package first_project; public interface Sell { void sell(); } Customer 클래스는 Buy 인터페이스와 Sell 인터페이스를 모두 구현 package first_project; public class Customer imple.. 2021. 10. 26. [자바] 인터페이스 - (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. 이전 1 2 3 4 다음 반응형