상속

    Node.JS)04.18-19( Object ( 객체 ) : 객체생성, 속성, 반복문, in, with, 속성제거/추가, 생성자, 프로토타입, 상속 )

    목차 2022.04.19 - [Programming/BACKEND] - Node.JS)04.18(Template literals (템플릿 문자열) ) 1. 자바스크립트의 '객체' 생성 객체 : { } 중괄호 안에 key(요소의 이름)와 value(요소의 값)이 ' : ' (콜론)으로 구분되어서 존재하는 값들의 집합. 변수하나 안에 한 개 이상의 '키'와 '값'이 조합되어 데이터를 넣어 사용한다. 객체안에 있는 키와 값의 조합 하나를 '속성'이라고 하며, 각 속성은 콤마( , )로 구분한다. const product = { name:'냉장고', 제조사:'대한민국' }; // 객체내의 키를 이용한 값의 출력 console.log(product['제조사']); console.log(product.name); ..

    JAVA Basic) 제네릭(Generic)

    목차 프로그램에서 변수를 선언할 때, 메서드에서 매개 변수를 사용할 때도 모든 변수는 자료형이 있다. 대부분은 하나의 자료형으로 구현하지만, 변수나 메서드의 자료형을 필요에 따라 여러 자료형으로 바꿀 수 있다면 프로그램이 훨씬 더 유연해질 것이다. 이처럼 어떤 값이 하나의 참조 자료형이 아닌 여러 참조 자료형을 사용할 수 있도록 프로그래밍하는 것을 '제네릭(Generic)프로그래밍'이라고 한다. '제네릭 프로그램'은 참조 자료형이 변환될 때 컴파일러가 검증을 해 꽤 안정적이다. '컬렉션 프레임워크'의 많은 부분이 이 '제네릭'으로 구현되어있다. 예제로 제네릭에 대해 이해해보자. 3D프린터는 재료를 가지고 입체 모형을 만드는 일을 한다. 재료는 파우더나 플라스틱을 사용한다. 먼저 파우더를 재료로 쓰는 3D..

    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) 추상 클래스 - 문제 풀이

    목차 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)상속과 다형성 - 문제 풀이

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

    JAVA Basic) 다형성 활용하기

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

    JAVA Basic ) 상속과 다형성_상속, 형 변환

    목차 객체 지향 프로그래밍의 중요한 특징 중 하나가 '상속(inheritance)'이다. B클래스가 A클래스를 상속받으면 -> B클래스는 A클래스의 멤버 변수와 메서드를 사용할 수 있다. 객체지향 프로그램은 유지 보수하기 편하고 프로그램을 수정하거나 새로운 내용을 추가하는 것이 유연한데, 그 기반이 되는 기술이 바로 이 '상속'이다. B클래스가 A클래스에서 상속을 받는다고 할 때 그림으로 다음처럼 나타낼 수 있다. 우리가 생각하기에 상속을 하는 클래스에서 상속을 받는 클래스로 화살표가 갈 것 같지만, 클래스 간 상속을 표현할 때는 다음 그림처럼 상속 받는 클래스에서 상속하는 클래스로 화살표가 가므로 햇갈리면 안된다. '상위 클래스'를 super class, base clase로, '하위 클래스'를 sub..