자바기반응용프로그래밍 - 패키지, 접근 지정자, static, final

2022. 4. 10. 23:49·Language/JAVA

패키지란?

관련있는 클래스 파일들끼리 묶어 놓은 디렉토리

 

자바의 접근 지정자

클래스나 일부 멤버를 공개하여 다른 클래스에서 접근하도록 허용

 

클래스 접근 지정
  • public: 다른 모든 클래스에 접근 허용 ex. public class Class1
  • default: 같은 패키지의 클래스에만 접근 허용 ex. class Class2

 

멤버 접근 지정
  • public: 모든 클래스에 허용
  • protected: 동일 패키지, 다른 패키지에서 상속받은 서브클래스도 허용
  • default: 동일 패키지만 허용
  • private: 동일 클래스만 허용

 

static 멤버와 non-static 멤버

  non-static 멤버 static 멤버
선언 class Sample1 {
   int n;
   void g() {...}
}
class Sample2 {
   static int n;
   static void f() {...}
}
공간적 특성 멤버는 객체마다 독립적으로 별도 존재
- 인스턴스 멤버라고도 부름
멤버는 클래스당 하나 생성
- 객체 내부가 아닌 메모리에 따로 생성
시간적 특성 객체를 생성 해야 멤버 사용 가능
- 객체가 사라지면 멤버도 사라짐
클래스 로딩하면 멤버 생성
- 객체 생기기 전에도 사용 가능
- 프로그램이 종료되어야 멤버 사라짐
공유의 특성 공유되지 않음 (객체마다 각각 관리) 동일한 클래스의 모든 객체들에 의해 공유됨 => 전역 변수, 전역 함수 

 

static 메소드는 non-static 멤버에 접근할 수 없음. 반대로, non-static 메소드는 static 멤버 사용 가능

this 사용 불가

why? => static 메소드는 객체가 생성되지 않은 상황에서도 호출 가능해서!

 

/*
• StaticEx의 코드가 정상 작동할 수 있도록 ArrayUtil 클래스를 작성
• concat(int[] a, int[] b) 메소드 : int 배열 a와 int 배열 b를 받아 이를 연결한 새로운 배열 리턴
• print(int[] a) 메소드 : 배열 a 출력
*/


class ArrayUtil {	
	public static int[] concat(int[] a, int[] b) {
		int [] c  = new int [a.length + b.length];
		for (int i = 0; i <a.length; i++) {
			c[i]=a[i];
		}
		for (int i = 0; i <b.length; i++) {
			int index = a.length+i;
			c[index] = b[i];
		}
		return c;
	}
	public static void print(int[] a) {
		for(int i=0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}
	}
}

public class StaticPrac {
	public static void main(String[] args) {
		int [] array1 = {1, 5, 7, 9};
		int [] array2 = {3, 6, -1, 100, 77};
		int [] array3 = ArrayUtil.concat(array1, array2);
		ArrayUtil.print(array3);
	}
}

 

final 키워드

  • final 클래스: 상속 불가
  • final 메소드: 오버라이딩 불가
  • final 필드: 선언 시 초기 값 지정해야 함. 값 변경 불가

 

저작자표시 (새창열림)

'Language > JAVA' 카테고리의 다른 글

자바기반응용프로그래밍 - 반복문  (0) 2022.04.11
자바기반응용프로그래밍 - main() 메소드로 인자 전달  (0) 2022.04.11
자바기반응용프로그래밍 - 메소드, 레퍼런스, 오버로딩, 가비지 컬렉션  (0) 2022.04.10
자바기반응용프로그래밍 - 객체 지향을 위한 클래스와 객체  (0) 2022.04.09
자바기반응용프로그래밍 - 연산자, 조건문  (0) 2022.04.08
'Language/JAVA' 카테고리의 다른 글
  • 자바기반응용프로그래밍 - 반복문
  • 자바기반응용프로그래밍 - main() 메소드로 인자 전달
  • 자바기반응용프로그래밍 - 메소드, 레퍼런스, 오버로딩, 가비지 컬렉션
  • 자바기반응용프로그래밍 - 객체 지향을 위한 클래스와 객체
abyss-s
abyss-s
프론트엔드 개발합니다!
  • abyss-s
    abyss-s의 블로그입니다.
    abyss-s
  • 전체
    오늘
    어제
    • 분류 전체보기 (190)
      • Web (16)
        • JavaScript (6)
        • TypeScript (1)
        • React (5)
        • Vue (0)
        • Storybook (1)
        • Next.js (1)
      • Backend & Infra (8)
        • Database (3)
        • Node.js (2)
        • SpringBoot (1)
      • PS (71)
      • CS (30)
        • OS (13)
        • Structure & Algorithm (5)
        • Network (10)
        • 정보처리기사 (2)
      • Language (18)
        • OOP (1)
        • JAVA (13)
        • C++ (4)
      • Activities (14)
        • 멋쟁이 사자처럼 (2)
        • OSSCA (3)
        • LG U+ URECA (5)
        • Project (2)
      • AI (0)
      • Git & Github (5)
      • Notion (1)
      • IT (4)
      • Statistics (11)
      • Book (4)
      • Diary (1)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
    • 백준
    • 트위터
  • 공지사항

    • abyss-s의 티스토리에 오신 것을 환영합니다.
  • 인기 글

  • 태그

    JavaScript
    C++
    네트워크
    OS
    운영체제
    자바기반응용프로그래밍
    Python
    BFS
    코드트리
    React
    통계학
    생활코딩
    Java
    DP
    백준
    자바스크립트
    그리디
    github
    파이썬
    BAEKJOON
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
abyss-s
자바기반응용프로그래밍 - 패키지, 접근 지정자, static, final
상단으로

티스토리툴바