템플릿 메소드 활용 하기 상속개념 , 다형성 개념 과 템플렛메소드 개념도 이해하고 넘어가야 한다. abstract class 추상 클래스 선언 템플릿 메소드 go() package TempletEx; public abstract class PlayerLevel { // 상위클래스 public abstract void run(); public abstract void jump(); public abstract void turn(); public abstract void showLevelMessage(); final public void go(int count) { // 템플릿 메소드 생성 - 이순서대로 실행해야 하기 때문에 final로 선언 run(); for(int i = 0; i < count; i++..
분류 전체보기
abstract class ( 추상 클래스 ) 추상클래스 응용 – 템플릿 메소드 사용 추상클래스는 상위클래스를 만들고 하위클래스가 상속받아서 구현해서 쓰는 경우가 많다. 템플릿 메소드 템플릿 : 틀이나 견본을 의미한다. 템플릿 메소드 : 추상 메소드나 구현된 메서드를 활용하여 전체의 흐름(시나리오) 를 정의해 놓은 메소드 이다. final 로 선언하여 재정의 할 수 없게 된다. 로직 – 이순서대로 수행해라 템플릿 메소드 패턴 : 디자인 패턴의 일종이다. 프레임 워크에서 많이 사용되는 설계 패턴이다. 추상클래스로 선언된 상의 클래스에서 추상 메소드를 이용하여 전체 구현의 흐름을 정의하고 구체적인 각 메소드 구현은 하위클래스에 위임한다. 하위 클래스가 다른 구현을 했다고 해서 템플릿 메소드에 정의된 시나리오..
추상클래스란? 앞에 abstract 라고 불리는데 추상클래스가 문법적으로 어떻게 쓰이는지 알수있다 추상클래스 추상메소드를 포함한 클래스이다. 추상 메소드 – 구현 코드가 없이 선언부만 있는 메소드이다. abstract 예약어를 사용한다. 추상클래스는 new (인스턴스화) 할 수 없다. cf) concrete class 명칭할수있다. 추상클래스 구현 메서드와 클래스에 abstract 키워드를 사용한다. 추상 메서드가 포함된 클래스는 추상 클래스로 선언한다. 모든 메소드가 구현되었다고 해도 클래스에 abstract 키워드를 사용하면 추상 클래스이다. 추상클래스 사용하기 추상 클래스는 주로 상속의 상위클래스로 사용된다. 추상메소드 : 하위 클래스가 구현해야 하는 메소드 ( 책임을 위임한다. ) 구현된 메소드 ..
Customer 클래스 package inheritance2; public class Customer { private int customerID; protected String customerName; protected String customerGrade; int bonusPoint; double bonusRatio; public Customer() { initCustomer(); } public Customer (int customerID , String customerName) { // 기본생성자에서 초기화 this.customerID = customerID; this.customerName = customerName; customerGrade = "SILVER"; bonusRatio = 0.01..
다운 캐스팅과 instanceof 하위클래스에서 상위클래스로 업캐스팅 – 묵시적으로 형변환 된다. 다시 원래되로 돌아오는게 다운캐스팅 이라 부른다 반환타입이 상위클래스 경우 자기 형으로 돌아와야 모든 메소드를 사용할수있으니까 하위 클래스로 형변환 , 다운 캐스팅 묵시적으로 상위 클래스 형변환된 인스턴스가 원래 자료형(하위클래스)으로 변환되어야 할 때 다운 캐스팅 이라 한다. 하위 클래스로의 형변환은 명시적으로 되어야 한다. Customer vc = new VIPCustomer(); // 묵시적 형변환 VIPCustomer vCustomer = (VIPCustomer) vc; // 명시적 형변환 명시적으로 VIPCustomer 이라고 알려줘야 한다 이것이 명시적 형변환 Customer vc = new VI..
다형성 이란? 하나의 코드가 여러 자료형으로 구현되어 실행되는 것 같은 코드에서 여러 실행 결과가 나온다. 정보은닉 , 상속 과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나이다 객체지향 프로그래밍의 유연성 , 재활용성 , 유지보수성에 기본이 되는 특징이다. package polymorphism; class Animal{ public void move() { System.out.println("동물이 움직입니다."); } } class Human extends Animal { @Override // 오버라이딩 public void move() { System.out.println("사람이 두발로 걷습니다."); } } class Tiger extends Animal { @Override public..