전체

반응형

    JAVA Basic) 인터페이스 요소

    목차 인터페이스는 추상 메서드로 이루어지므로 인스턴스를 생성할 수 없으며 멤버 변수도 사용할 수 없다. 근데 인터페이스에 아래 코드와 같이 변수를 선언해도 오류는 발생하지 않는다. public interface Calc{ double PI = 3.14; int ERROR = -99999999; ... } 이 이유는 인터페이스에 선언한 변수를 컴파일 하면 상수로 변환되기 때문이다. Calc 인터페이스에 선언한 변수 PI를 컴파일 하면 상수 3.14, int형 변수 ERROR역시 -9999999~로 변환되어 상수로 취급된다. public static final double PI = 3.14; public static final int ERROR = -999999999; ... 자바 7까지는 인터페이스에서 추..

    JAVA Basic) 인터페이스와 다형성

    목차 '인터페이스(interface)'는 어디에 쓰이는 코드일까? 자바 8에서 새롭게 추가된 '디폴트 메서드'와 '정적 메서드 구현부(implementation part)'가 없다면 인터페이스는 그야말로 껍데기이다. 그렇다면 '메서드 선언부(declaration part)'만 있는 인터페이스는 대체 왜 쓰는지 살펴보자. 인터페이스는 클라이언트 프로그램에 어떤 메서드를 제공하는 지 알려주는 '명세(specification)'또는 약속의 역할을 한다. 예를 들면, Abc인터페이스를 구현한 A클래스가 있다. 이 클래스를 사용하는 Z프로그램이 있다고 가정. Abc인터페이스에는 구현할 추상 메서드가 모두 선언되어 있고, 어떤 매개변수가 사용되는지, 어떤 자료형 값이 반환되는지 선언되어있다. Z 프로그램에서 A클래..

    JAVA Basic) 인터페이스(interface)

    목차 구현 코드가 없는 인터페이스 인터페이스(interface)는 클래스 혹은 프로그램이 제공하는 기능을 명시적 선언하는 역할. 추상 메서드와 상수로만 이루어짐. 구현된 코드가 없어서 당연히 인스턴스를 생성할 수 없다. 이러한 인터페이스는 어떻게 사용되어지는지 간단한 계산기를 만들어보자. - calc 인터페이스 package interfaceex; public interface Calc { double PI = 3.14; int ERROR = -999999999; // 멤버변수는 public static final(상수)로 자동 선언됨 int add(int num1, int num2); int substract(int num1, int num2); int times(int num1, int num2); ..

    JAVA Basic) 추상 클래스 - 문제 풀이

    목차 Q1 클래스를 구현할 때 메서드 몸체를 구현하지 않고 선언만 하는 메서드를 [ ]라고 하고, 이를 포함한 클래스를 [ ]라고 한다. Q2 상수를 선언할 때 상속받은 클래스에서 메서드를 재정의하지 못하도록 사용하는 예약어는 [ ]이다. Q3 추상 클래스나 추상 메서드를 선언할 때 사용하는 예약어는 [ ]이다. Q4 로직 흐름을 정의한 메서드이며 메서드 내부에서 일반 메서드나 구현되지 않은 추상 메서드를 호출. 흐름이 변하지 않도록 하위 클래스에서 재정의하지 못하게 final로 선언하는 메서드를 [ ]라고 한다. Q5 Car 추상 클래스를 상속받는 Sonata, Avante, Gradeur, Genesis 클래스가 있다. 각 차는 주행하기 위해 다음 순서로 움직인다. run(){ strat(); dri..

    JAVA Basic) final 예약어

    목차 템플릿 메서드를 만들면서 'final 예약어'를 사용했다. 'final'은 '마지막'이라는 의미로 마지막으로 정했으니 더 이상 수정은 불가능하다는 뜻으로 사용된다. 자바에서 'final예약어'는 변수, 메서드, 클래스에서 사용할 수 있다. 상수는 '변하지 않는 수'이다. package finalex; public class Constant { int num = 10; final int NUM = 100; //상수 선언 public static void main(String[] args) { Constant cons = new Constant(); cons.num = 50; cons.NUM = 200;//상수에 값을 대입해 오류 발생 System.out.println(cons.num); System...

    JAVA Basic) 템플릿 메서드(template method)

    목차 '템플릿(template)'이란 용어는 틀, 견본을 뜻하는 용어다. 즉 틀이 있는 메서드라는 의미. 싱글톤 패턴과 같은 일종의 디자인 패턴. 템플릿 메서드는 추상 클래스를 사용하여 구현할 수 있다. package template; public abstract class Car { public abstract void drive(); public abstract void stop(); public void startCar() { System.out.println("시동을 켭니다."); } public void turnOff() { System.out.println("시동을 끕니다."); } final public void run() { startCar(); drive(); stop(); turnOff..

    JAVA Basic) 추상 클래스 - abstract class

    목차 일반적으로 추상적이란 것은 구체적이지 않고 막연한 것을 뜻한다. 대입해보면 '구체적이지 않은 클래스'가 된다. 영어로는 abstract class. 추상 클래스가 아닌 클래스는 'concrete class - 구체적인 클래스'라고 한다. 지금까지 배운 클래스는 모두 concrete class이다. 추상 클래스는 항상 추상 메서드를 포함한다. 추상 메서드는 구현 코드가 존재하지 않다. 그러니까 함수 몸체(body), { }가 없다. int add(int x, int y){ return x + y; } // { }안의 내용이 함수 몸체(body) 중괄호 {}기 감싼 부분을 함수의 구현부(몸체)라고 한다. 이 부분이 없는 함수는 추상 함수(abstract function)이라고 부르며, 자바에서는 추상 ..

    JAVA Basic)상속과 다형성 - 문제 풀이

    목차 Q1 자바에서는 어떤 클래스의 기능을 확장하여 새로운 클래스를 만들기 위해 상속을 한다. 이때 사용하는 예약어는 [ ]이다. Q2 하위 클래스가 상위 클래스의 생성자를 호출하거나 상위 클래스의 멤버 변수, 메서드를 호출하기 위해 사용하는 예약어로 상위 클래스의 주소, 즉 참조 값을 나타내는 예약어는 [ ]이다. Q3 클래스를 상속받은 상태에서 상위 클래스에 이미 정의되어 있는 메서드를 하위 클래스에서 사용하기 위해 적절하지 않은 경우에 해당 메서드를 재정의할 수 있다. 이것을 [ ]라고 한다. Q4 다음 코드는 오류가 발생했다. 오류가 발생한 원인을 설명하라. package practice; public class Employee { public String name; public String gr..

    JAVA Basic) 다운 캐스팅과 instanceof

    목차 앞에서 상위 클래스로 형 변환이 묵시적으로 이루어지는 과정을 알아봤다. 여기에서 다시 하위 클래스로 형 변환이 되는 과정을 알아보자. 위와 같은 계층 구조에서 상위 클래스 자료형으로 선언하는 코드가 가능하다. Animal = new Human(); // 상위 클래스 자료형으로 선언 이때 생성된 인스턴스 Human은 Animal형입니다. 이렇게 Animal형으로 형 변환이 이루어진 경우엔 Animal의 메서드와 멤버 변수만 사용이 가능하다. 따라서 필요에 따라 다시 원래 인스턴스의 자료형으로 되돌아가야 하는 경우가 필요하다. 이렇게 상위 클래스로 형 변환되었던 하위 클래스를 다시 원래 자료형으로 형 변환하는 것을 '다운 캐스팅(down casting)이라고 한다. instanceof 상속 관계를 생각..

    JAVA Basic) 다형성 활용하기

    목차 상속과 다형성을 활용하면 프로그램을 유지보수하는 데 굉장히 편리하다. 여기에 배열까지 함께 사용하게 되면, 여러 하위 클래스 자료형을 상위 클래스 자료형으로 한꺼번에 관리할 수도 있게 된다. 새로운 요구 사항이 발생했다..! [예제 시나리오] 고객이 늘어 VIP등급 보다 물건을 많이 구매하진 않지만, 그래도 혜택을 주는 등급(GOLD)을 추가하고 싶습니다. -제품을 살 때는 항상 10% 할인. -보너스 포인트 2% 적립 -담당 전문 상담원 X 새로운 고객 등급이 생겼다. 이 등급의 고객은 VIP고객과 보너스 포인트 적립률이 다르고, 담당 상담원이 없다. 이 내용을 기반으로 Customer클래스를 상속받아 'GoldCustomer클래스'를 만들어보자. 고객 관리 시스템은 다음과 같은 계층구조로 확장될..

    JAVA Basic) 다형성

    목차 묵시적 클래스 형 변환과, 가상메서드를 바탕으로 객체 지향의 중요한 특성인 '다형성(polymophism)'을 알아보자. '다형성'이란, 하나의 코드가 여러 자료형으로 구현되어 실행되는 것이다. 쉽게 말하면, 같은 코드에서 여러가지 실행 결과가 나오는 것이다. 3개의 클래스가 Animal클래스를 상속받은 상황이다. Animal클래스에서 메서드를 하나 정의하고 상속받은 클래스에서 재정의하는 코드를 구현해보자. package polymorphism; class Animal{ public void move() { System.out.println("동물이 움직입니다."); } } class Human extends Animal { public void move(){ System.out.println("사..

    현업 개발자 용어 / 기본 개념 정리

    목차 하이브리드앱 안드로이드와 ios 둘 다 구동이 가능한 웹 기반의 구현방식 돈이 적게 듬 요즘 금융, 쇼핑몰 등 이런 방식으로 앱을 만듬. 하이브리드(Hybrid)서비스와 웹(Web)의 차이점 어플리케이션에서는 2차 인증, 바코드인식 기능(휴대폰의 기능을 사용하는 것)이 가능하지만 브라우저에서는 불가능. 라이브러리 기존에 구현된 기능을 갔다 붙이는 형식 암호화, 차트 등 오픈소스 등 프레임 워크 (자바 스프링 프레임 워크) (에펙에 템플릿 비슷) 프로세스를 고정화 시켜서 비즈니스적인 로직을 추가하는 방식 프레임워크는 큰 흐름이 주어지면 내 입맛대로 소스를 추가하거나, 몇가지 요소를 바꾸는 구현 방식. SI (system intergration) 시스템을 구현하는 업무 포지션 SM (System man..

반응형