Day 26

ChangWoo·2023년 5월 1일
0

자바의 정석

목록 보기
26/71

ch 7-15,16 import문, static import문

import문

  • 클래스를 사용할 때 패키지이름을 생략할 수 있다.
  • 컴파일러에게 클래스가 속한 패키지를 알려준다.
Ex) class ImportTest {							          import java.util.Date	
		java.util.Date today = new java.util.Date();  --> 	class ImprotTest {
    	// ....										        Date today = new Date();
    }                                        		      }
  • import문이 있어서 Date에 java.util을 사용하지 않아도 Ok!
  • 이클립스 단축키 (ctrl + shift + o)
  • java.lang패키지의 클래스는 (기본 패키지이기 때문에) import하지 않고도 사용할 수 있다. (String, Object, System, Thread ...)
  • 원래는 Stirng과 System에도 import문이 있어야 한다. (*은 패키지 안의 모든 클래스를 의미한다.)
  • 그러나, 기본 패키지는 많이 사용하기 때문에 매 번 사용하지 않도록 생략 가능하다.

import문의 선언

  • import문을 선언하는 방법은 다음과 같다.
import 패키지명.클래스명;
또는
import 패키지명*;   // (*은 패키지에 속한 모든 클래스를 의미한다.)
  • import문은 패키지문과 클래스선언의 사이에 선언한다.
    1. 패키지 선언 -> 2. import문 -> 3. 클래스 순서로 와야한다.
  • import문은 컴파일 시에 처리되므로 프로그램의 성능에 영향없음.
import java.util.Calendar;  
import java.util.Date;			--> import java.util.*; // java.util 패키지의 모든 클래스를 의미
import java.util.ArrayList;
  • 다음의 두 코드는 서로 의미가 다르다.
import java.util.*;   -->   import java.*;  // java 패키지의 모든 클래스를 의미(패키지는 포함안됨.)
import java.text.*;
  • 이름이 같은 클래스가 속한 두 패키지를 import할 때는 클래스 앞에 패키지명을 붙여줘야 한다.

static import문

  • static멤버를 사용할 때 클래스 이름을 생략할 수 있게 해준다.
  • static import문을 사용하게 되면, Math.random에서 Math를 생략할 수 있게 된다.
Ex) Syste.out.println(Math.random()); --> out.println(random());

  • Math 클래스의 모든 staic멤버를 클래스 이름 없이 사용가능!
  • System과 Math 생략 가능!

ch 7-17~20 제어자, static,final,abstract

제어자(modifier)

  • 클래스와 클래스의 멤버(멤버변수, 메서드)에 부가적인 의미 부여(형용사의 역할)
  • 접근 제어자 : public, protected, (default), private // 4개 중 1개만 사용 가능
  • 그 외 : static, final, abstract, naive, transient, synchronized, volatile, strictfp
  • 하나의 대상에 여러 제어자를 같이 사용가능(접근 제어자는 하나만)
  • 순서는 상관없지만, 접근 제어자를 제일 왼쪽에 사용한다.

static - 클래스의, 공통적인

  • 인스턴스멤버 = iv(인스턴스 변수) , im(인스턴스메서드)
  • static은 iv 앞에 붙어 cv가 된다.
  • 클래스 초기화 블럭 = 복잡한 초기화를 수행한다. / static {복잡한 초기화 코드}
  • 메서드 앞에 붙일 수 있다. (iv 사용불가 / 인스턴스 메서드 사용 X)
  • iv멤버들은 객체생성 후 사용할 수 있다.
  • static과 cv는 객체생성 없이 사용 가능 but 객체를 필요로 하는 iv와 인스턴스 메서드를 사용 불가

final - 마지막의, 변경될 수 없는

  • final은 전부 다 붙을 수 있다.
  • 클래스의 마지막에 final이 붙으면 변경될 수 없는 클래스(=확장될 수 없는 클래스 = 조상이 될 수 없는 클래스)가 된다. (= 상속계층에서 제일 마지막이 된다.) -String / Math 클래스가 대표적
  • 변수 앞에 final이 붙으면 상수가 된다.
  • 메서드 앞에 final이 붙으면 변경불가한 메서드가 된다. (오버라이딩 할 수 없다. = 조상 메서드를 덮어쓸 수 없다.)

abstract - 추상의, 미완성의

업로드중..

  • abstract는 클래스와 메서드 앞에만 붙을 수 있다.
  • 몸통 {}이 없는 메서드는 미완성 메서드(선언부는 있으나, 구현부가 없음)로 추상 메서드라 하고, 앞에 abstract를 붙인다.
  • 추상 메서드를 가진 클래스는 미완성 클래스로, 추상 클래스라 한다.
  • 추상 클래스는 미완성 상태이므로 인스턴스(객체) 생성불가
    Ex) AbstractTest a = new AbstractTest(); // 에러. 추상 클래스의 인스턴스 생성불가
  • 추상 클래스를 상속받아서 완전한 클래스(구상 클래스)를 만든 후에 객체 생성가능
profile
한 걸음 한 걸음 나아가는 개발자

0개의 댓글