개발로드

★KDT 2024-01-19☆ 본문

JAVA

★KDT 2024-01-19☆

위대한개발자 2024. 1. 19. 19:42
★ 필드(=인스턴스 변수, 멤버변수) - 객체가 생성될 때 메모리에 올라감, 객체 뱃속에 있음) => 힙에 존재함

☆ 생성자 - 객체를 초기화, 이름은 클래스 이름과 같다.

★ 메소드 - 동작방식, 기능
    접근지정자  리턴타입  메소드명(매개변수=파라미터) {실행문}
     메소드 시그니처      바디

☆ 지역변수의 생존기간 => 중괄호 내에서 생존. 중괄호를 벗어나면 메모리에서 삭제

★ static => 클래스영역의 클래스 파일내부에 존재하여 어디서든 사용할 수 있다.

 


 접근 제한자(=접근 지정자)

  •  public : 외부 클래스(다른 패키지의 클래스)도, 내부(같은 피키지) 클래스도 모두 자유롭게 사용할 수 있는 것
  • protected : 같은 패키지 내와 패키지가 다르더라도 자식 클래스면 자유롭게 사용할 수 있는 것
  •  ※다른 패키지에서는 사용 불가능
  • default : 같은 패키지의 클래스에서는 자유롭게 사용, 다른 패키지에서 사용할 수 없다.
  • private : 자신의 클래스 내에서만 사용할 수 있는 것.
  • 접근 제한자의 범위
  • ※ public > procted > default > private
★ getter : private으로 선언된 필드를 읽어서 넘겨주는 역할
◎ 필드명 앞에 get을 붙이고 필드명의 첫 글자를 대문자로한다
◎ boolean형은 필드명의 첫 글자에 is를 붙이고 첫글자를 대문자로한다
★ setter : private으로 선언된 필드를 수정
◎ 필드명 앞에 set붙이고 필드명의 첫글자를 대문자로한다
◎ boolean형은 필드명의 첫 글자에 is를 붙이고 첫 글자를 대문자로한다

 

패키지(package)와 임포트(import)

패키지

  • 프로젝트의 하위폴더의 개념
  • 클래스 파일을 목적별로 묶어서 관리
  • java.lang : 자바의 가장 기본 클래스 묶음
  • java.util : 유용한 확장 클래스 묶음
  • java.awt / java.swing/javafx : 자바 그래픽 관련 클래스 묶음
  • java.io / java.nio : 자바 입출력 패키지 관련 클래스
  • 패키지마다 이름 공간(namespace) 생성  => 클래스 이름의 충돌 방지
  • 반드시 첫 줄에 표시


임포트

  •  다른 패키지의 클래스를 사용하고자 할 때
  • 클래스이름의 전체 경로(패키지.클래스)이름 사용
    • abc.bcd.A a = new abc.bcd.A();  => import 하지 않을 경우
    • import abc.bcd.A;  // import 패키지명.클래스명
    •  A a = new A(); => import 사용할 경우
  • 패키지가 다른 동일한 이름의 클래스는 두 개 이상 import 할 수 없음
    • ex) import abc.bcd.A;
    • import bcd.cde.A;
      • => 이럴 경우 둘 중의 하나는 풀네임을 써야 함
  • 패키지의 모든 클래스를 한번에 임포트 하기 위해서는 * 사용
    • ex) import abc.bcd.*;
  • 접근제한자가 public 이어야 다른 패키지에서 import 할 수 있음
  • 패키지 : 비슷한 목적으로 생성된 클래스 파일들을 한 곳에 모아 둔 폴더(클래스 파일을 목적별로 묶어서 관리)
  • 패키지 지정하지 않으면 : default package(하위 폴더 없음)로 src 폴더 아래 소스 파일 바로 위치
  • 패키지 지정 : src폴더 -> 해당 패키지 폴더 -> 소스파일 위치
  • 패키지의 영향으로 클래스가 저장되는 공간이 분리되어 클래스명 충돌 방지
  •  import : 자바가 제공하는 API나 다른 개발자가 만든 패키지에 위치한 클래스 사용하려 할 때 
    • 다른 패키지의 클래스를 마치 자신의 패키지 내부에 있는 것처럼 사용
    •  (프로그램이 동작할 때는 일반적으로 자신의 패키지 내부에 위치한 클래스만 사용할 수 있음)
  • 다른 패키지 : 클래스의 fullname 사용 :  패키지명.클래스명 
  • 임포트 사용 : import 패키지명.클래스명
  •  '*'로 임포트시 주의 사항 - 실제 임포트 되는 대상은 소스 코드(.java)가 아닌 bin 폴더에 위치한 컴파일이 
    • 완료된 바이트 코드(.class)
    • - 하위 폴더는 임포드 되지 않으며, 클래스 파일들 만 임포드 됨
  • 서로 다른 패키지에 있는 같은 이름의 클래스를 중복해 임포트하면 결국 같은 패키지 내에 같은 클래스명이 2개 이상
  • 존재하는 셈이 되어 허용되지 않음. 방법은 풀네임을 사용


외부 클래스 (external class) 

클래스의 외부에서 정의
동일한 파일에 작성된 클래스는 동일 패키지내의 클래스로 간주
하나의 파일에는 최대 하나의 public class만 존재가능(파일 이름과 동일)

 하나의 파일에 작성된 외부클래스는 다른 패키지에서 사용불가(default)
 다른 패키지에서 사용하고자 한다면 파일 분리

  public 클래스의 외부에 추가로 정의한 클래스
 1개의 소스파일 안에서 public 클래스를 제외한 모든 클래스는 모두 외부 클래스
 public 클래스가 아니면 다른 패키지에서 임포트 할 수 없으므로 외부 클래스는 같은 패키지 안에서만 사용할 수 있음(default)






'JAVA' 카테고리의 다른 글

★KDT 2024-01-23☆상속, static, 싱글톤, 정적 초기화  (0) 2024.01.23
☆KDT 2024-01-22★  (0) 2024.01.22
☆KDT 2024-01-18★  (0) 2024.01.18
★KDT 2024-01-17☆  (0) 2024.01.17
☆KDT 2024-01-16★  (0) 2024.01.16