[JAVA 파헤치기] 자바의 유용한 클래스들
개발/Java
/ 2021. 4. 29.
01. Object 클래스 - 모든 클래스의 최상위 클래스 java.lang 패키지 프로그래밍 시 자동 import import.java.lang* 많이 사용하는 기본 클래스들이 속한 패키지 String, Integer, System,, 등등 모든 클래스는 Object 클래스를 상속 java.lang.Object 클래스 모든 클래스의 최상위 클래스 모든 클래스는 Object에서 상속받고, Object 클래스의 메서드 중 일부는 재정의해서 사용 가능 (final로 선언되지 않은 클래스가 재정의 가능) 컴파일러가 자동으로 extends Object를 추가 ( class Student → class Student extends Object ) toString( ) 메서드 객체의 정보를 String으로 바꾸어서..
인터페이스(interface)
개발/Java
/ 2021. 4. 27.
인터페이스란? 모든 메서드가 추상 메서드로 선언됨 public abstract 모든 변수는 상수로 선언됨 public static final interfacce 인터페이스 이름 { public static final float pi = 3.14F; public void makeSomething( ); } 자바 8부터 디폴트 메서드(default method)와 정적 메서드(static method) 기능의 제공으로 일부 구현 코드가 있음 인터페이스 정의와 구현 1. Interface Calc public interface Calc { double PI = 3.14; int ERROR = -999999999; int add(int num1, int num2); int substract(int num1, i..
추상 클래스의 응용 - 템플릿 메서드 패턴
개발/Java
/ 2021. 4. 26.
템플릿 메서드 추상 메서드나 구현된 메서드를 활용하여 코드의 흐름(시나리오)을 정의하는 메서드 final로 선언하여 하위 클래스에서 재정의 할 수 없게 함 프레임워크에서 많이 사용되는 설계 패턴 추상 클래스로 선언된 상위 클래스에서 템플릿 메서드를 활용하여 전체적인 흐름을 정의하고 하위 클래스에서 다르게 구현되어야 하는 부분은 추상 메서드로 선언하여 하위 클래스에서 구현하도록 함 템플릿 메서드 예제 1. 추상 클래스 Car 구현 public abstract class Car { public abstract void drive(); public abstract void stop(); public void startCar() { System.out.println("시동을 켭니다."); } public voi..
추상 클래스(abstract class)
개발/Java
/ 2021. 4. 26.
추상 클래스란? 구현 코드 없이 메서드의 선언만 있는 추상 메서드(abstrct method)를 포함한 클래스 메서드 선언(declaration) : 반환 타입, 메서드 이름, 매개변수로 구성 메서드 정의(definition) : 메서드 구현(implementation)과 동일한 의미 구현부(body)를 가짐 → ({ }) int add(int x, int y); //선언 int add(int x, int y) { } // 구현부가 있음, 추상 메서드 아님 abstract 예약어를 사용 추상 클래스는 new 할 수 없음( 인스턴스화 할 수 없음) 추상 클래스 구현하기 메서드에 구현 코드가 없으면 abstract로 선언 abstract로 선언된 메서드를 가진 클래스는 abstract로 선언 모든 메서드가 ..
다운 캐스팅과 instanceof
개발/Java
/ 2021. 4. 26.
다운 캐스팅(downcasting) 업캐스팅된 클래스를 다시 원래의 타입으로 형 변환 하위 클래스로의 형 변환은 명시적으로 해야 함 *앞 예제 코드 Customer vc = new VIPCustomer( ); //묵시적 VIPCustomer vCustomer = (VIPCustomer) vc; //명시적 Instanceof Instanceof를 이용하여 인스턴스의 형 체크 원래 인스턴스의 형이 맞는지 여부를 체크하는 키워드 True / False를 반환 *앞 예제 코드 if ( customerE instanceof GoldCustomer) { GoldCustomer vc = (GoldCustomer)customerE; System.out.println(customerE.showCustomerInfo( )..
오버라이딩(Overriding)
개발/Java
/ 2021. 4. 25.
오버라이딩(Overriding) 상속받은 하위 클래스에서 메서드 재정의 하기 상위 클래스에 정의된 메서드의 구현 내용이 하위 클래스에서 구현할 내용과 맞지 않는 경우 하위 클래스에서 동일한 이름의 메서드를 재정의 할 수 있음 전 상속 내용에서 봤던 예제를 보면.. Customer클래스에는 calcPrice( )[할인율] 메서드가 선언되어있지만, VIPCustomer 클래스에는 적용 X 재정의 구현 예제 @Override public int calcPrice(int price) { bonusPoint += price * bonusRatio; return price - (int)(price * salesRatio); } @overriding 애노테이션 (annotation) annotation은 spring..