자바 쫌쫌따리

갱두·2021년 10월 25일
0

📚 Java

목록 보기
9/9

1. 인터페이스와 추상클래스의 차이점

✔️ 추상 클래스 : 객체의 추상적인 상위 개념으로 공통된 개념을 표현할 때 사용함. 단일 상속만 가능
✔️ 인터페이스 : 구현 객체가 같은 동작을 한다는 것을 보장하기 위해 사용. 다중 상속 가능

2. 클래스와 객체

✔️ 클래스 : 객체를 정의하는 틀 또는 설계도
✔️ 객체(인스턴스) : 식별 가능한 개체 또는 사물. 객체는 구별 가능한 식별자, 특징적인 행동, 변경 가능한 상태

3. 정적(static)이란 ?

  • 객체를 생성하지 않고도 변수나 함수를 사용할 수 있어서 빠르고 편리함.
  • 클래스를 설계할 때, 변수 중 모든 인스턴스에 공통적으로 사용해야 하는 것에 static 을 붙인다. 인스턴스를 생성하면, 각 인스턴스들은 서로 독립적이기 때문에 서로 다른 값을 유지하는데, 경우에 따라 각 인스턴스들이 같은 값을 유지해야 하는 경우에 static을 붙인다.
  • static이 붙은 변수는 인스턴스를 생성하지 않아도 사용할 수 있음. static이 붙으면 클래스가 메모리에 올라갈 때 자동적으로 생성되기 때문
class card {
	String kind;
    int number;
    static int width = 100;
    static int height = 250;
}

각 카드 인스턴스는 자신만의 종류와 숫자를 유지해야 하므로 인스턴스 변수, 각 카드들의 폭과 높이는 모든 인스턴스가 공통적으로 같은 값을 유지해야 하므로 클래스 변수
만일 카드의 폭을 변경해야할 때는 모든 카드의 값을 변경하지 않고, 한 카드의 width만 변경해도 모든 카드의 width가 바뀌는 것.

출처 : https://vaert.tistory.com/101

4. 자바의 원시타입은 무엇이 있고 각각 몇 바이트 ?

  • boolean (1)
  • char (unsigned 2)
  • byte (1)
  • int (4)
  • short (2)
  • float (4)
  • double (8)
  • long (8)

원시타입 vs 참조타입

원시타입은 항상 값이 존재해야 함. 변수가 초기화될 때 원시타입은 기본값을 가지지만 참조 타입은 null 포인터를 가짐

5. 객체 지향 프로그래밍이란

프로그래밍에서 필요한 데이터를 추상화시켜서 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법임

✔️ 장점

  • 코드 재사용이 용이 : 남이 만든 클래스를 가지고 와서 이용할 수 있고, 상속도 가능
  • 유지보수가 쉬움 : 수정해야 할 부분이 클래스 내부에 변수 혹은 메소드라서 해당 부분만 수정하면 됨
  • 대형 프로젝트에 적합 : 클래스 단위로 모듈화시켜서 개발할 수 있어서 업무 분담이 쉬움

✔️ 추상화 : 불필요한 정보는 숨기고 중요한 정보만 표현해서 공통의 속성이나 기능을 묶어 이름을 붙이는 것
✔️ 캡슐화 : 코드를 재수정없이 재활용 하는 것. 객체가 맡은 역할을 수행하기 위한 하나의 목적을 한데 묶는다.
✔️ 상속 : 부모 클래스의 속성과 기능을 그대로 이어받아 사용할 수 있게 하고, 기능의 일부분을 변경해야 할 경우 상속받은 자식 클래스에서 해당 기능만 다시 수정하여 사용할 수 있게 함
✔️ 다형성 : 변수명, 함수명 등이 상황에 따라 다른 의미로 해석될 수 있음
✔️ getter, setter를 사용하는 이유 : 메소드를 통해서 접근하기 때문에 메소드 안에서 매개변수 같이 어떤 올바르지 않은 입력에 대해 사전에 처리할 수 있음.

6. shallow copy vs deep copy

shallow copy : 객체의 주소값을 복사. 객체만 복사하여 새 객체를 생성
deep copy : 객체의 실제값을 복사함. 복사할 때 객체와 변수까지 복사

✔️ 깊은 복사를 하기 위해선 Cloneable interface를 implement해서 clone 메소드를 오버라이드 해야 함.

profile
👩🏻‍💻🔥

0개의 댓글