※ 읎 Ꞁ은 윔드프레소 첎험닚 활동을 하멎서 만듀얎졌습니닀.
※ Java 프로귞래밍 쎈꞉ 강의입니닀.
※ 윔드프레소 바로가Ʞ

Java 객첎지향

객첎지향 읎란?

  • 데읎터와 데읎터에 대한 엱상륎 수행하는 윔드륌 귞룹화 한 개개첎륌 쀑심윌로 SW륌 섀계 개발하는 팚러닀임
  • 닀수의 객첎가 각자의 역할을 하고, 객첎 간에는 메섞지륌 죌고 받윌며 전첎 시슀템을구성
  • 시슀템의 핎위볎닀, 시슀템에 찞여하고 책임을 갖는 객첎가 묎엇읞지에 죌목

큎래슀

  • 큎래슀는 Java 프로귞랚의 Ʞ볞닚위
  • Java 프로귞랚은 한개 읎상의 큎래슀로 구성됚
  • 음번적윌로 1개의 큎래슀는 1개의 Java파음
  • 객첎륌 생성하Ʞ 위한 섀계도
  • 객첎 생성을 위한 정볎(객첎가 가진 속성, 행동)륌 포핚하고 있음

객첎

  • 객첎는 사묌(또는 우늬가 상상할수 있는개념)
  • 큎래슀로 객첎륌 생성
  • 객첎는 속성(변수)곌 행동(메소드)을 가지고 있음

큎래슀와 객첎의 ꎀ계

  • 큎래슀는 객첎륌 만듀Ʞ 위한 틀 또는 템플늿

추상화

  • 반드시 필요한 것듀을 선택하고 불필요한 것듀은 버늬는 곌정
  • 추상화의 곌정 자첎가 하느읎 큎래슀륌 섀계하는 곌정
  • 특정 객첎에 반드시 필요한 속성곌 행위륌 정의하는 곌정

좋은 큎래슀는

  • ꌭ 필요한 최소한의 속성곌 행위만 졎재한닀
  • 속성곌 행위 몚두 특정 객첎와 높은 ꎀ렚성읎 있얎알 한닀
  • 너묎 큰 규몚의 큎래슀는 분할 도늬 필요가 있닀

자바 큎래슀 구현곌 객첎 생성

큎래슀 구현

객첎 생성

  • 큎래슀로부터 객첎륌 생성
    - 큎래슀명 변수명 = new 큎래슀명();

객첎의 멀버 변수 ì ‘ê·Œ

  • 점 연산자로 객첎의 멀버에 접귌가능
    - 객첎 찞조변수명.멀버변수명

메소드의 개념곌 Ʞ쎈 활용

메소드

  • 객첎는 속성곌 행위륌 갖고 있고, 메소드는 객첎의 행위륌 정의
  • 메소드는 핚수와 거의 유사
  • 메소드는 특정 개첎에 포핚되얎있음

핚수

  • 특정한 적업을 수행하Ʞ 위한 윔드듀의 집합
  • 특정 작업의 윔드듀을 몚듀화 하여 필요한 겜우 혞출
  • 윔드의 쀑복을 쀄음수 있음

메소드 VS 핚수

  • 메소드
    - 메소드는 특정 객첎 낎부에서 졎재
    - 객첎의 멀버 변수에 대한 연산읎 가능
  • 핚수
    - 핚수는 독늜적윌로 졎재
    - 핚수는 특정 작업에 필요한 데읎터륌 몚두제공핎알 핹

메소드의 묞법

접귌제얎자의 개념 및 적용

캡술화의 2가지 의믞

  • 객첎의 속성곌 행도을 하나의 닚위로 귞룹화
  • 객첎의 속성곌 행도을 은닉
    - 반드시 필요한 속성 및 행도안 왞부에 녾풀
    - 대부분의 속성 및 행동은 왞부에서 접귌하지 못하도록 막음

객첎의 정볎 은닉

  • 객첎 낎부에서는 왞부에서 접귌하새 변겜하멎 안되는 속성읎 졎재
  • 반람시 필요한 멀버만 왞부에 녞출하여 결합도륌 쀄음수 있음

객첎의 정볎 은닉 방법

  • 접귌제얎자륌 활용하여 멀버의 접귌을제얎
  • 접귌제얎자의 종류
    - public : 몚든곳에서 ì ‘ê·Œ 가능
    - private : 왞부에서 ì ‘ê·Œ 불가
    - protected : 상속 ꎀ계얎서 자식읎부몚 멀버에 ì ‘ê·Œ 가능
    - default : 같은 팚킀지 낎부에서만 ì ‘ê·Œ 가능, 접귌제얎자 명시하지 않았을때 핎당

접귌제얎자의 사용

  • 큎래슀는 class 킀워드 앞에 명시
    - public class User
  • 멀버변수는 자료형 앞에 명시
    - private String email;
  • 메소드는 늬턎 타입 앞에 명시
    - public boolean isOver20()

메소드의 늬턎값곌 파띌믞터

메소드의 묞법

  • 메소드는 Input곌 Output읎 졎재
    - Input은 없거나 1개 읎상의 파띌믞터 늬슀튞
    - Output은 없거나 늬턎 값윌로 표시
    - 늬턎 타입은 늬턎 되는 값의 자료형(늬턎 값읎 없을 겜우 void)

메소드 파띌믞터(맀개변수)의 활용

  • 파띌믞터는 메소드의 Input데읎터
  • 없거나 1개 읎상의 파띌믞터 졎재 가능
  • 메소드 읎늄 뒀에 위치하며 소ꎄ혞 낎부에 "자료형 변수명" 쌍윌로 표현
  • User 객첎의 private 멀버변수 email의 값을저장하는 메소드 추가

this의 개념곌 활용

  • 객첎 낎부에서 this는 핎당 객첎 자신을 의믞
  • 변수의 읎늄읎 쀑복되지 않는 겜우 this로 명시하닀 않아도 묎방
  • 파띌믞터의 읎늄을 의믞 있게 만듀며, 멀버 변수의 읎늄곌 볎통 쀑복읎 됚

멀버변수의 값을 저장(변겜)하는 Setter 메소드

  • User 객첎의 몚든 private멀버 변수에 값을 저장하는 메소드 추가
  • 볎통 1개의 멀버 변수의 값을 섞팅하는 메소는 set읎띌는 동사로 시작
  • setter띌고 지칭

읞자(argument) VS 파띌믞터

  • 읞자는 메소드에 전달하는 데읎터(값)
  • 파띌믞터는 전달 받는 읞자 값을 저장하는 변수

메소드 늬턎 값의 활용

  • 메소드의 수행 결곌륌 값윌로 반환
    - return 킀워드륌 사용하며, return을 만나멎 메소드는 값을 반환하고 종료 됚
    • 메소드 낎에 1개 읎상의 return묞 사용가능
  • 메소드에 늬턎 하는 값의 자료형을 명시핎알 핹
  • 늬턎값읎 없는 겜우도 졎재
    - 늬턎 자료형에 "void"킀워드 사용

객첎의 private멀버 변수의 값을반환하는 메소드 추가

  • User 객첎의 몚든 private 멀버 변수에 값을 반환하는 메소드 추가
  • 볎통 1개의 멀버 변수의 값을 반환하는 메소드는 get읎띌는 동사로 시작
  • getter띌고 지칭

생성자의 활용

생성자

  • 생성자의 읎늄은 큎래슀의 읎늄곌 동음
  • ì ‘ê·Œ 제얎자는 볎통 public을 사용
  • 0개 또는 1개 읎상의 파띌믞터 ì„ ì–ž 가능
  • 늬턎 타입을 생략됚

Default 생성자

  • 생성자륌 명시적윌로 추가하지 않는 겜우 Default생성자륌 제공
    - 1개 읎상의 생성자륌 명시적윌로 구현한 겜우는 제공하지 않음

메소드 였버로딩

같은 작업을 하지만 파띌믞터만 닀륞 메소드가 필요한 겜우

  • 메소드륌 사용할때는 동음 작업을 위한 닀양한 읎늄의 메소드륌 Ʞ억핎알 핹
  • 메소드륌 개발할 때 파띌믞터의 조합에 따띌 닀양한 읎늄을 생성핎알 핹

메소드 였버로딩

  • 특정 큎래슀 안에서 파띌믞터가 닀륞 동음한 읎늄의 메소드 ì„ ì–ž
  • 파띌믞터의 자료형 또는 개수가 닀륎멎 동음한 읎늄 사용가능
  • 메소드 혞출시 파띌믞터 섞팅 조걎에 따띌 혞출 되는 메소드가 결정됚
  • 늬턎 타입은 메소드 였버로딩의 조거에 핎당하지 않음

생성자 였버로딩

  • 생성자도 특수한 형태의 메소드읎Ʞ에 였버로딩 적용가능
  • 쎈Ʞ화 원하는 멀버 변수만 선택핎서 쎈Ʞ화 가능
  • 생성자 였버로딩은 빈번하게 사용

상속의 개념

상속의 개념

  • 음반화된 특성읎 정의된 큎래서
  • 음반화된 특성을 몚두 가지멎서, specific한 특성까지 정의한 큎래슀
  • 음반화된 큎래슀(부몚 큎래슀)륌 재사용하여 새로욎 specific한 큎래슀(자식 큎래슀)륌 생성하는것
  • 자식 큎래슀는 부몚 큎래슀의 몚든 멀버변수와 메소륎륎 상속받음
  • 상속을 거듭할수로 자식 큎래슀의 멀버변수와 메소드 개수는 같거나 늘얎낚
  • 상속의 횟수는 제한 없음
  • 객첎지향 프로귞래밍을 구성하는 죌요 특징 쀑 하나
  • 큎래슀 간의 계잵적 분류가 가능핎짐

Java로 상속 구현하Ʞ

  • extends륌 사용하여 부몚 큎래슀의 멀버륌 상속받아 확장시킬수 있음
  • class 자식 큎래슀명 extends 부몚큎래슀명{...}

상속의 특징

  • 큎래슀 간의 계잵적 분류가 가능핎짐
  • 상속 받은 멀버는 자식 큎래슀에서 별도로 선얞하지 않음
  • 상속받은 멀버에 대한 윔드는부몚 큎래슀에서 공통적윌로 ꎀ늬할수 있음

상속의 장점

  • 윔드의 재사용성 슝가
  • 큎래슀 간의 계충구조에따란 닀형성 적용가능

닚음상송

  • Java는 닀쀑상속을 허용하지 않음
  • 슉 하나의 큎래슀로부터만 상속을 받을 수 있음

상속 ꎀ계와 ì ‘ê·Œ 제얎

접귌제얎자

  • 왞부로부터의 접귌을 제한하Ʞ 위한 목적의 킀워드
  • 상속 ꎀ계에서의 접귌을 제한하Ʞ 위핎서도 사용됚

private 접귌제얎자

  • 왞부로부터 접귌을 제한하Ʞ 위한 킀워드
  • 였직 같은 큎래슀 낎에서만 접귌읎 가능핚
  • 상속받은 자식 큎래슀에서도 접귌읎 제한됚
  • private 멀버변수에 대핮 왞부접귌읎 필요한 겜우 부몚 큎래슀에 public getter,setter메소드륌 제공

protected 접귌제얎자

  • 왞부로부터 접귌을 제한하Ʞ 위한 킀워드
  • 상속 받은 자식 큎래슀에서의 접귌을 가능하게 핹

상속ꎀ계의 ì ‘ê·Œ 제얎

  • 자식 큎래슀에서의 접귌을 제한 하Ʞ위핎서는 private을 사용한닀
  • 자식 큎래슀에서의 접귌을 허용 하Ʞ위핎서는 protected륌 사용한닀
  • 멀버 변수의 특성에 맞는 ì ‘ê·Œ 제얎자륌 선택하는 것읎 쀑요하닀

상속ꎀ계에서의 생성자와 super킀워드

상속ꎀ계에서 생성자는 얎떻게 동작할까요?



  • 부몚큎래슀의 생성자는 상속되지 않는닀
  • 자식 큎래슀읎 객첎륌 생성시, 부몚 큎래슀의 Ʞ볞 생성자륌 자동윌로 혞출
  • 최상위 부몚 큎래슀의 생성자부터 한 닚계 아래 자식윌로 찚례대로 혞출

명시적읞 부몚 생성자의 혞출읎 없는데 얎떻게 가능?

super 킀워드

  • Java에서 super는 부몚 큎래슀륌 의믞하는 킀워드
  • super();는 부몚 큎래슀의 파띌믞터 없는 생성자륌 혞출
  • 자식 큎래슀에서 부몚 큎래슀 생성자륌 명시적윌로 혞출하지 않윌멎, Java 컎파음러는 자식 큎래슀 생성자의 첫 번짞 띌읞에 super(); 륌 자동윌로 삜입
  • 파띌믞터가 있는 부몚 생성자는 Java 컎파음러가 자동윌로 혞출하지 않음
  • 파띌믞터가 있는 생성자륌 혞출할때는 반드시 명시적읞 선얞읎 필요핚

메소드 였버띌읎딩

메소드 였버띌읎딩

  • 부몚 큎래슀로부터 상속받은 메소드륌 자식 큎래슀가 자신만의 특성에 맞게 새롭게 구현하는것
  • 였버띌읎딩을 통핎 윔드의 간결성을 유지하멎서 낎용을 확장시킬수 있음

메소드 였버띌읎딩의 조걎

  • 였버띌읎딩 하는 부몚 큎래슀읎 메소드와 읎늄읎 같아알 한닀.
  • 였버띌읎딩 하는 부몚 큎래슀의 메소드와 파띌믞터가 같아알 한닀.
  • 였버띌읎딩 하는 부몚 큎래슀의 메소드와 늬턎타입읎 같아알 한닀.
profile
잘핎 볎겠닀!

0개의 댓Ꞁ