• Home
  • About
    • ming photo

      ming

      studying

    • Learn More
    • Twitter
    • Facebook
    • Instagram
    • Github
    • Steam
  • Archive
    • All Posts
    • All Tags
    • All categories
  • categories
    • HTML+CSS+JavaScript
    • JAVA
    • Algorithm
    • DB
    • JSP
    • 정보처리기사
    • Spring
    • Thymeleaf
    • 기술면접
  • Projects

JAVA-자바의정석Ch7(객체지향 프로그래밍 2)12~14,15~16,17~20,21,22

24 Feb 2021

🔶 자바의정석Ch7 - 12~14,15~16,17~20,21,22

✔ 자바의정석Ch7-12 패키지(package)

- 서로 관련된 클래스의 묶음 
- 클래스는 클래스파일(*.class),패키지는 폴더. 하위 패키지는 하위폴더 
- 클래스의 실제이름(full name)은 패키지를 포함한다 (java.lang.String)
- rt.jar(rt : runtime 실행할때, 실행중)는 클래스들을 압축한 파일 이다(JDK 설치경로\jre\lib에 위치) => java9부터는 rt.jar X

✔ 자바의정석Ch7-13 패키지의 선언

- 패키지는 소스파일의 첫 번째 문장으로 단 한번 선언한다
- 같은 소스 파일의 클래스들은 모두 같은 패키지에 속하게 된다
- 패키지 선언이 없으면 이름없는(unnamed) 패키지에 속하게 된다 => default packkage

✔ 자바의정석Ch7-14 클래스 패스(classpath)

- 클래스 파일(*.class)의 위치를 알려주는 경로(path)
- 환경변수 classpath로 관리하며, 경로간의 구분자는 ';'(세미콜론)을 사용한다
- classpath(환경변수)에 패키지의 루트를 등록해 줘야 한다

✔ 자바의정석Ch7-15 import문

- 클래스 사용시 패키지 이름을 생략할 수 있다
- 컴파일러에게 클래스가 속한 패키지를 알려준다 
- java.lang패키지(기본패키지)의 클래스는 import하지 않고도 사용할 수 있다    
- import문의 작성방법
    1) import 패키지명.클래스명; => 이클립스 단축키 ctrl + shift + o
    2) import 패키지명.*; => 모든 클래스
- import문은 패키지문과 클래스선언의 사이에 선언한다
- import문은 컴파일시 처리되므로 프로그램의 성능에 영향이 없다
- 이름이 같은 클래스가 속한 두 패키지를 import할 때는 클래스 앞에 패키지명을 붙여줘야 한다

✔ 자바의정석Ch7-16 scatic import문

 - static멤버를 사용할 때 클래스 이름을 생략할 수 있게 해준다

ch7-16

✔ 자바의정석Ch7-17 제어자(modifier)

- 클래스와 클래스의 멤버(멤버 변수, 메서드)에 부가적인 의미를 부여한다
- 하나의 대상에 여러 제어자를 같이 사용가능하다(접근 제어자는 하나만 가능) ![ch7-17](https://user-images.githubusercontent.com/65608960/108952165-67a12a80-76ac-11eb-9ab8-122ad2af5b1e.JPG)

✔ 자바의정석Ch7-18 static : 클래스의, 공통적인

ch7-18

✔ 자바의정석Ch7-19 final : 마지막의, 변경될 수 없는

ch7-19

✔ 자바의정석Ch7-20 abstract : 추상의, 미완성의

ch7-20

✔ 자바의정석Ch7-21 접근제어자(access modifier)

1) private : 같은 클래스 내에서만 접근 가능하다
2) (default) : 같은 패키지 내에서만 접근 가능하다
3) protected : 같은 패키지 내에서,그리고 다른 패키지의 자손클래스(다른패키지)에서 접근 가능하다
4) public : 접근 제한이 전혀 없다

✔ 자바의정석Ch7-22 캡슐화와 접근 제어자

- 접근 제어자를 사용하는 이유 : 외부로부터 데이터를 보호하기 위해서 사용 한다 -> 캡슐화
  • 예제

      package Java_Nam;
    
      class Time{
          private int hour;  // 0~23사이의 값을 가져야 한다
          private int minute;
          private int second;
            
          public void setHour(int hour) {
              if(extracted(hour)) return;
                
              this.hour = hour;
          }
          // 조건식 선택 후 alt + shift + m : 선택한 조건문 리턴하는 메서드 생성 
          // 매개변수로 넘겨진 hour가 유효한지 확인해서 알려주는 메서드
          private boolean extracted(int hour) {
              return hour < 0 || hour > 23;
          }
            
          public int getHour() {
              return hour;
          }
      }
      public class TimeTest {
    
          public static void main(String[] args) {
    
              Time t = new Time();
              // t.hour = 25;
              t.setHour(21); // hour의 값을 21로 변경
              System.out.println(t.getHour());
                        
          }
    
      }
    


Share Tweet +1