Dorothy_YANG
With Dorothy
Dorothy_YANG
전체 방문자
오늘
어제
  • 분류 전체보기 (279)
    • Hi, I'm Dorothy 🕵️‍♂️ (21)
      • Slowly but Surely (18)
      • IT certifications (3)
    • 🤯TIL (80)
      • HTML & CSS (2)
      • Javascript & jQuery (13)
      • React (13)
      • C언어 (1)
      • JAVA (22)
      • Python (2)
      • Oracle SQL (10)
      • My SQL (5)
      • Spring (12)
    • 💻Programmers (17)
    • 🏫 Open API_JAVA (101)
    • 🌎 Project (10)
      • Shopping (10)
    • 💥 Error (24)
    • ⚙ Setting (23)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • oracle
  • 독학후기
  • CSS
  • 비쥬얼스튜디오코드
  • Database
  • 파이썬온라인
  • HTML
  • SQL
  • sql기간
  • SQLD합격후기
  • AllArgsConstructor
  • 백준
  • Eclipse
  • Javascript
  • 콜라보레이토리
  • 코딩앙마
  • 서버등록
  • 연습문제
  • googlecolaboratory
  • 오류해결
  • 이것이자바다
  • 노마드코더
  • spring
  • SQLD합격
  • 창초기화
  • 기간쿼리
  • colaboratory
  • java
  • 시작일종료일
  • 기간설정

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dorothy_YANG

With Dorothy

[36일차] static / 싱글톤 / final / import 문 / 디버깅 / getter setter  / 상속 / 재정의
🏫 Open API_JAVA

[36일차] static / 싱글톤 / final / import 문 / 디버깅 / getter setter / 상속 / 재정의

2022. 9. 14. 23:50
728x90

20220913(화)

  • 목차
    - 정적 멤버와 static
    - 싱글톤 Singleton
    - final 필드와 상수
    - 패키지 - import 문
    - 디버깅 실행키 
    - 접근 제한자
    - getter setter 
    - 상속 개념
    - 재정의 Overriding

< 정적 멤버와 static >

  • 정적 멤버 ( = 클래스 멤버)
    클래스에 고정된 멤버로 객체를 생성하지 않고 사용할 수 있는 필드와 메서드
  정적 필드 (클래스 멤버) 인스턴스 필드 (객체 멤버) 
판단
기준
*객체 생성 없이도 실행이 됨

객체마다 가지고 있을 필요가 없는
변하지 않는 공용적인 데이터 선언 필드
*객체가 있어야 실행됨

객체별로 @가 다를 경우 선언
ex static double pi = 3.14159;
// 계산기에서 사용하는 파이 값은 동일하다.
String color;
// 계산기별로 색깔이 다를 수 있다.
초기화 객체 생성 없이도 사용해야 하므로
생성자에서 초기화 작업 불가능
생성자에서 초기화 해야 함
접근 클래스 이름으로 접근(객체 참조변수도 가능)

Calculator.plus(10,5);

객체 생성 후 참조변수로 접근

Car myCar = new Car(); // 객체 생성
myCar.speed= 70; // 필드 접근
myCar.run(); // 메소드 접근
this 사용 객체 자신의 참조인 this 사용불가 생성자와 메소드매개변수 이름이 필드와 동일시,
자신의 참조(주소)를 갖고 있는 키워드
this 사용가능

 


< 싱글톤 Singleton >

  • 싱글톤
    하나의 어플리케이션 내에서 단 하나만 생성되는 객체
    (소프트웨어 디자인 패턴 중 생성 패턴의 하나)

  • 디자인 패턴이란?
    개발을 구조적으로 우아하게 설계하려고 노력하다 보니 발견된 반복되는 패턴들

  • 특징
    : 하나의 클래스로 객체를 단 한 번만 생성하도록 클래스를 설계.

싱글톤 만드는 방법 3단계


객체의 참조는 똑같다! (동일한 객체) getInstance로만 불러올 수 있음

 


< final 필드와 상수 >

final 필드 상수
초기값이 저장되면 이것이 최종적인 값이 되어
프로그램 실행 도중 수정 불가능
불변의 값.
ex) 파이, 지구의 무게 및 둘레 등
final 필드 != 상수
객체마다 저장됨
생성자의 매개값을 통해 여러 값을 가질 수 있기 때문에
상수가 될 수 X
객체마다 저장할 필요가 없는 공용성,
여러가지 값으로 초기화 될 수 없음

 

상수 이름은 모두 대문자로 작성하는 것이 관례


< 패키지 - import 문 >

  • 패키지에서 import 문이 필요한 이유?
    - 같은 패키지에 속하는 클래스들은 아무런 조건 없이 다른 클래스 사용할 수 있지만,
      다른 패키지에 속하는 클래스를 사용하려면 아래 두 가지 방법 중 하나 선택 필요

    1) 패키지와 클래스 모두 기술하거나 (➡ 코드 난잡)
    2) import 문 사용
         

 단, 패키지는 다르지만 클래스명이 동일할 경우, 혼란 방지를 위해 1)의 방법을 사용함.


< 디버깅 실행키 >

  • F5 (Step Into) : 프로그램을 한 스텝 진행, 다음 실행 문이 함수 안이면 함수 안으로 들어감
  • F6 (Step Over) : 메서드를 하나의 단위로 보고, 실행하고 그다음 줄로 넘어간다.
  • F7 (Step Return) : F5로 진입한 상태에서 나오고 싶을 때 ➡ 실행하고 나와버린다.

 


< 접근 제한자 >

private   같은 파일 안에서만 사용 가능
default   같은 패키지 내에서만 사용 가능
public   다른 패키지에서도 아무런 제한 없이 사용 가능

🤷‍♂️ 아~ 나 그럼 다 public으로 하고 싶은데? 

  ➡ 할 수는 있지. 개발할 수는 있지만,, 협업하고 작업할 때 실수 생기면?
       사전 방지 위해서라도 구분해서 사용하자! 
        +) 어느 때 사용할지 나중에 예제를 통해 더 알게 된다.

 

 

 


< Getter Setter 메서드 >

  • 필요성
    클래스 선언 시 필드는 일반적으로 private 접근 제한을 함 
    - 읽기 전용 필드가 있을 수 있다. ➡ Getter의 필요성
    - 외부에서 엉뚱한 값으로 변경할 수 없도록 함 ➡ Setter의 필요성
Getter : 필드 값 가져오기  
private 필드의 값을 리턴하는 역할을 한다.
getFieldName( ) 메소드를 말한다.
*필드 타입이 boolean일 경우 ➡ isFieldName( )
public 리턴 타입 getFieldName( ) {
     return fieldName;
}
Setter : 값 초기화  
외부에서 주어진 값을 필드값으로 수정한다.
setFieldName(타입 변수) 메소드를 말한다.
public void setFieldName(타입 fieldName) {
     this.fieldName = fieldName;
}

 


< 상속 개념 >

기존에 만든 것을 재사용한다.

생성자 메서드를 수동으로 정의하면, 디폴트 생성자가 컴파일 과정에서 자동생성이 안된다.

  • 클래스 상속
    - 현실에서 상속은 부모가 자식을 선택해서 물려주지만, 프로그램에서는 자식이 부모를 선택한다!
       ex) class 자식 클래스 extends 부모 클래스 {   };

✨암기하기!
  new 연산자 : 메모리 생성 연산자(힙 영역)
   1) new 연산자가 DmbCellPhone클래스의 상속관계를 먼저 확인 후
   2) 상속되어 있으면, 부모 클래스의 메모리를 먼저 생성한다.
   3) 자식(자신) 클래스의 메모리를 생성한다.
   4) 부모 생성자 호출 - 자식(자신) 생성자 호출 순서로 진행이 된다.


  • 부모 생성자 호출
    부모 생성자는 자식 생성자의 맨 첫 줄에서 호출된다. super();

  • 부모 클래스를 상속받아야 되는데 매개변수(파라미터가 있는) 생성자를 갖고 있으면,
    자식은 기본 생성자를 사용할 수 없다. ➡ super로 부모를 호출

빨간 박스 : 부모에서 물려받은 필드 출력

 


< 메서드 재정의 Overriding >

  • Overloading vs Overriding
Overloading Overriding
중복정의 재정의 (상속관계)
하나의 클래스 안에서 동일한 이름을 여러개 사용 부모클래스의 메서드 명을 자식클래스에서
메서드명을 이용하여, 내용을 변경하는 것.

 

  • 재정의 탄생 배경
    자식 클래스에서 부모의 메서드명은 맘에 들고, 메서드명을 새롭게 만들기에는 이름에 부담이 발생.
    & 개발자의 정신적 건강을 위해.

  • @Override (오버라이드 어노테이션)
    컴파일러에게 부모 클래스의 메서드 선언부와 동일한지 검사 지시
    컴파일러에게 아래 메서드는 상속관계에서 부모 클래스의 메서드를 재정의하는 것이라고 정보제공

Override 생성 후, { } 중괄호 안의 내용은 바꿔야 재정의!

 

더보기

- 변수 : 기억 장소가 값을 변경하는 특징

- 상수 : 기억 장소가 값이 변경되지 않는 특징 / 값을 위해서 만든 이름.

 

✔ 기억 장소에 이름을 부여해서, 기억 장소를 관리 ➡ 값을 이름을 부여해서 사용

 

728x90
저작자표시

'🏫 Open API_JAVA' 카테고리의 다른 글

[38일차] 필수 이론 정리 / 오라클 테이블 생성 / 매개 변수의 다형성  (0) 2022.09.19
[37일차] final / 접근 제한자 / 타입 변환과 다형성 / Oracle Database 설치  (0) 2022.09.15
[35일차] 클래스 / 필드 / 메소드 / 생성자 / 인스턴스 / static  (0) 2022.09.12
[34일차] 객체배열 / main() / 다차원 배열 / 배열복사 / 향상된 for문  (0) 2022.09.10
[33일차] 문자열 등식 / 논리연산자 / 비트 이동 연산자 / 삼항연산자  (0) 2022.09.07
    '🏫 Open API_JAVA' 카테고리의 다른 글
    • [38일차] 필수 이론 정리 / 오라클 테이블 생성 / 매개 변수의 다형성
    • [37일차] final / 접근 제한자 / 타입 변환과 다형성 / Oracle Database 설치
    • [35일차] 클래스 / 필드 / 메소드 / 생성자 / 인스턴스 / static
    • [34일차] 객체배열 / main() / 다차원 배열 / 배열복사 / 향상된 for문
    Dorothy_YANG
    Dorothy_YANG
    Slowly but Surely, 비전공 문과생의 개발공부

    티스토리툴바