Programming Language54 [자바] 추상 클래스 - (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. [자바] 상속에 대하여 - (2) 오버라이딩, 가상 메서드 상속에서 중요한 것 중에 클래스 간의 형 변환이 있다. 이전 예시인 Customer와 VIPCustomer 관계를 생각해볼 때 하위 클래스인 VIPCustomer는 상위 클래스인 Customer보다 더 많은 기능을 갖고 있음 상속받은 클래스는 상위 클래스 기능을 모두 사용 + 본인의 기능 사용이기 때문이다. 따라서 VIPCustomer는 VIPCustomer형인 동시에 Customer형이라고 할 수 있다. 그래서 다음과 같이 형변환이 가능해짐 Customer customerKim = new VIPCustomer(2020, "김유신", 111); 이때 이 customerKim은 정체가 뭘까? VIPCustmer 생성자가 호출되므로 VIPCustomer의 변수, 메서드가 메모리에 생성됨. 그런데 클래서 자료.. 2021. 10. 23. [자바] 상속에 대하여 - (1) 상속의 기능과 구현, super의 뜻 - 상속이란 상속: 물려주다 A 클래스가 B 클래스에게 상속한다 = B 클래스가 A 클래스를 상속받는다 이때 A 클래스가 상위 클래스, B 클래스가 하위 클래스가 된다. - 구현 상속은 extends 예약어를 통해 구현한다. class B extends A { } - 상속의 기능 상위 클래스에서 작성한 변수나 메서드를 사용할 수 있다. 이때 상위 클래스의 변수나 메서드 중 외부 클래스에서는 사용할 수 없지만 하위 클래스에서는 사용할 수 있도록 지정하는 것이 protected 예약어 - 하위 클래스가 상위 클래스의 변수나 메서드를 사용할 수 있는 이유 하위 클래스가 생성 될때 상위 클래스의 생성자가 먼저 호출되고 그 다음에 하위 클래스의 생성자가 호출되기 때문. 즉, 상위 클래스의 변수가 메모리에 먼저 생.. 2021. 10. 23. 이전 1 2 3 4 5 6 7 8 9 다음