4/28 - 4/30

목표: Ch 03 객체 지향 핵심 01 ~ 04

완료: Ch 03 객체 지향 핵심 01 ~ 04

 

이번주 자바강의 소감

3주차까지 포스팅이 너무 중구난방 이었다. 이번주부터 바로 티스토리에 적으니 좀 더 깔끔한 정리가 되는 것 같다. 자바의 핵심으로 들어갈 수록 더 어려워지고 복잡해 지는 것 같다. 함정은 아직도 기초 부분이라는 것... 하지만 목표는 무조건 끝까지 듣고 이해하기. 이런 과정을 몇 번 반복하다보면 점점 쉬워지지 않을까 싶다. 현재 자바강의는 13%정도 들었다. 하루에 적어도 1시간씩 자바강의를 듣고 있는데 이 속도라면 자바강의 완강하는데 5달은 걸리지 않을까 생각한다.

필기중에 클래스/클라스 이름을 번갈아 쓰는데, 원래는 클라스라고 써왔다가 사람들이 클래스/클라스 혼용해서 쓰다보니 나도 둘 다 쓰게 되었다. 별로 중요하진 않지만 만약 사람들이 내 글을 보고 이런 것 때문에 좀 불편해 할까봐 설명한다. 

 

 

Ch 03 객체지향 프로그래밍

 

 1. 객체 간의 상속 

클래스 상속

  • 이미 구현된 클래스를 상속(inheritance) 받아서 속성이나
    기능을 확장하여 클래스를 구현함
  • 이미 구현된 클래스보다 더 구체적인 기능을 가진 클래스를
    구현해야 할때 기존 클래스를 상속함

상속하는 클래스 : 상위 클래스, parent class, base class, super class

상속받는클래스 : 하위클래스, child class, derived class, subclass

- 오른쪽 그림은 자바강의 중 - 

 

  • 상속의 문법

class B extends A{ }

extends 키워드 뒤에는 단 하나의 클래스만 올 수 있음
(implement는 여러 개의 클래스 올 수 있음)

- 오른쪽 그림은 JAVA강의 중 -
( C++은 여러개의 클래스가 올 수 있음)
(여러개 있을 때 문제 : 모호성 )

자바는 단일 상속(single inheritance)만을 지원함 ,
안정성(기존 C 나 C++보다 ), 심플

 

상속을 구현 하는 경우

  • 상위 클래스는 하위 클래스 보다 더 일반적인 개념과 기능을 가짐
  • 하위 클래스는 상위 클래스 보다 더 구체적인 개념과 기능을 가짐
  • 하위 클래스가 상위 클래스의 속성과 기능을 확장 (extends)한다는 의미

 2. 상속을 활용한 멤버십 클래스 구현하기 

 

멤버십 시나리오

일반고객

private String customerName;

private String customerGrade;
int bonusPoint;
double bonusRatio;

 

일반고객과 VIP고객의 중복되는 부분은 일반고객에 넣고 VIPCustomer 클래스에서 Customer 클래스를 extends로 상속한다.

VIPCustomer 에서 추가될 변수를 작성.

Customer에서 상속받은 customerGrade 상속받은 변수를 VIPCustomer 에서 사용시 오류가 남. private 변수 이므로. 그럴땐 protected로 상속받는 클래스도 private변수를 사용할 수 있게 한다.

 

 3. 상속에서 클래스 생성 과정과 형 변환 

하위 클래스가 생성 되는 과정

  • 하위 클래스를 생성하면 상위 클래스가 먼저 생성 됨
  • new VIPCustomer()를 호출하면 Customer()가 먼저 호출 됨
  • 클래스가 상속 받은 경우 하위 클래스의 생성자에서는 반드시 상위 클래스의 생성자를 호출 함 ex: super( );

JAVA강의 중 - 필기는 내 것

형 변환(업캐스팅)

  • Customer상위클라스 customerLee = new VIPCustomer( )하위클라스; // 상위클라스 = new 하위클라스( ) .......문제없음 하위클라스는 이미 상위클라스를 포함하고 있으므로.
  • 상위클라스로 형변환 => 상위클라스 = new 하위클라스( )  
  • 상위 클래스 타입의 변수에 하위 클래스 변수가 대입;
  • implicit하게 일어남. custom이므로 특별한 선언 필요 없음. (묵시적 형변환) 

 

 

JAVA강의 중 - 필기는 내 것

 

다운 캐스팅된 vCustomer는 상위클래스 변수만 접근 가능하게 됨. VIPCustomer() 변수 사용 x

 

 

 4. 메서드 재정의하기(overring) 

하위 클래스에서 메서드 재정의 하기

  • 항상 상위클래스를 있는데로 쓰지 않음. 필요시 재정의할 수 있음.
  • VIPCustomer 클래스의 calcPrice()는 할인율이 적용되지 않음
  • 재정의 하여 구현해야 함
  • 반환값/메서드 이름/ 매개변수 type 값이 같아야 함. (정의부분 = function signature)

VIPCustomer.java 

@Override

  • 애노테이션은 원래 주석이라는 의미
  • 컴파일러에게 특별한 정보를 제공해주는 역할

JAVA강의 중 - 초록색 필기는 내 것

이번주 java강의들의 키 포인트는 클라스 상속과 하위클라스를 상위클라스로 형변환해주는 업캐스팅, 그리고 상속받은 후 하위클라스에서 매서드를 재정의(override) 하는 것. 

 

내가 수강한 강의 : http://abit.ly/java-spring

 

한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online. | 패스트캠퍼스

Java/Spring 웹 개발, 핵심 25가지 스킬부터 공부하세요. 대기업 출신 7인의 강사진이 모여 만든 Java/Spring 웹 개발 완전체 커리큘럼! 핵심 스킬 25가지 강의부터 250개의 예제, 7개의 프로젝트까지! 비

fastcampus.co.kr

 

+ Recent posts