Java - DAY 7

NewTypeAsuka·2023년 2월 15일
0

Java@

목록 보기
8/22

1. 복사

얕은 복사

  • 객체의 주소 값만 가져와 참조형 변수에 저장하고 하나의 객체를 두 변수가 참조하는 것
  • 같은 주소를 참조하고 있기 때문에 arr2의 값을 바꾸면 arr1의 값도 바뀐다.
  • 바로가기의 개념
int[] arr1 = new int[4];
int[] arr2 = arr1;

깊은 복사

  • 새로운 배열 객체를 생성하여 기존 배열의 데이터를 복사하는 것
  • 다른 주소를 참조하기 있기 때문에 arr2의 값을 바꿔도 arr1의 값은 바뀌지 않는다.
  • 복사하기의 개념
for(int i=0; i<arr.length; i++) {
	arr2[i] = arr1[i];
}
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
arr2 = Arrays.copyOf(arr1, arr1.length);
arr2 = arr1.clone();

2. 2차원배열과 가변배열

2차원배열

  • 자료형이 같은 1차원배열을 묶음으로 다루는 배열
  • 2차원 배열은 할당된 공간마다 인덱스 번호 두 개 부여
    (앞 번호는 행, 뒷 번호는 열)



가변배열

  • 다차원 배열 생성 시 마지막 배열차수의 크기를 지정하지 않고
    나중에 서로 크기가 다른 배열로 지정한 배열


3. 객체지향 프로그래밍(OOP)

객체(Object)

  • 사전적 정의:
    자신의 속성과 기능이 다른 것과 구분되어 식별 가능한 것
  • 자바에서의 실질적 정의:
    클래스에 정의된 내용을 토대로 new 연산자를 통해 메모리(Heap)에 생성되는 것

객체지향 프로그래밍

  • 객체지향 3+1대 특징
    1) 캡슐화
    2) 상속
    3) 다형성
    4) 추상화
  • 객체지향 언어:
    현실 세계는 사물이나 개념처럼 독립되고 구분되는 각각의 객체로 이루어져 있으며,
    발생하는 모든 사건들은 객체 간의 상호작용이다.
    이 개념을 컴퓨터로 옮겨놓은 것이 객체지향 언어이다.
Student s = new Student(); // 객체의 할당

4. 캡슐화(Encapsulation)

클래스(Class)

  • 객체의 속성을 정의한 것
  • 일반적으로 설계도, 빵틀로 비유된다.
    • 설계도인 클래스는 객체가 아니라는 점에 유의
    • 설계도인 하나의 클래스로 여러 객체를 만들 수 있다.
  • 클래스 접근제한자
    1) public: 모든 패키지, 모든 클래스에서 접근할 수 있음
    2) (default): 같은 패키지 내에서만 접근할 수 있음


캡슐화

  • 추상화를 통해 정리된 데이터와 기능을 하나로 묶어 관리하는 기법
  • 클래스의 가장 중요한 목적인 데이터의 직접 접근제한을 원칙으로 하여
    클래스 외부에서 데이터의 직접적인 접근을 막고,
    대신 간접적으로 데이터에 접근할 수 있는 메소드를 클래스 내부에 작성하는 방법
    (getter/setter)

캡슐화 원칙

  • 1) 클래스의 멤버 변수에 대한 접근 권한은 private을 원칙으로 한다.
    2) 클래스의 멤버 변수에 대한 연산처리를 목적으로 하는 멤버 메서드는 클래스 내부에 작성한다.
    3) 멤버 메서드는 클래스 밖에서 접근할 수 있도록 public으로 설정한다.

0개의 댓글