면접준비(4)객체지향의 3대원칙

Tae hyun·2023년 3월 29일
0

면접준비

목록 보기
4/9

출처: 자바의 정석3판 객체지향 프로그래밍p230~287,p310~348

1.객체지향 언어의 특징
1) 코드의 재사용성이 높다
-새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.
2) 코드의 관리가 용이하다
-코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.
3) 신뢰성이 높은 프로그래밍을 가능하게 한다.
-제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드 의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다.

2.클래스와 객체
1)클래스와 객체의 정의와 용도
(1)클래스(붕어빵 기계)
:클래스란 객체를 정의해 놓은 것이며, 객체를 생성하는데 사용된다.
(2)객체(붕어빵)
:객체는 실제로 존재하는 것으로 용도는 객체가 가지고 있는 기능과 속성에 따라 다르다.

3.객체지향의 3대원칙
1)상속
:기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것
장점
-1.보다 적은 양의 코드로 새로운 클래스를 작성할 수 있음
-2.코드를 공통적으로 관리할 수 있어 코드이 추가 및 변경이 매우 용이함

2)캡슐화
:데이터가 외부로 노출되지 않도록 가리는 것
접근 제어자를 이용해 데이터를 외부에 노출하지 않도록 가려놓고(정보은닉),가려진 자료를 사용하기 위해 접근 가능한 메서드를 만들고, 데이터를 setting,getting
할 수 있도록 setter,getter로 데이터를 접근하도록 하는 것

3)다형성
:한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 하는 것
-상속과 인터페이스를 통해 이루어짐.
*upcasting, downcasting
-upcasting: 객체는 자식, 타입 부모인 캐스팅. 부모 클래스에 정의된 멤버만 사용가능, 형변환 생략 가능.
-downcasting:부모 타입으로 업캐스팅 된 상태에서 자식 클래스에만 있는 메서드를 사용할 때 부모타입을 자식 타입으로 형변환하는 것. 형 변환 생략 불가능

참고: https://velog.io/@oh-taehyun/면접준비1자바언어의-특징

그외 추가 설명

*객체와 인스턴스
:클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 하며 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다.

*자바 메모리 영역
출처: https://velog.io/@pjh612/Java-실행-과정-컴파일러-그리고-메모리-영역에-대하여

1)PC register
:스레드가 시작될 때 생성되며 현재 수행중인 JVM 명령의 주소를 가진다

2)Method area
:모든 스레드가 공유하는 영역으로, 클래스, 인터페이스, 메소드, 필드, Static 변 수 등의 바이트 코드를 저장함

3)stack area
:스레드마다 하나의 Stack area를 가지며, 메서드 호출 시 메서드 단위로 스택 프 레임이 생성된다. 호출된 메서드의 매개변수, 지역변수, 리턴 값, 연산 시 임시값 등을 저장하고 메서드 종료 시 스택 프레임 단위로 제거된다.

4)Heap area
:모든 스레드가 공유하는 영역으로 객체들을 위한 영역, new를 통해 생성된 객체, 배열 등의 정보를 저장하고, Garbage Collector에 의해 관리되는 주요 메모리 영역

5)Native method area
:자바 언어가 아닌 다른 언어로 작성된 네이티브 코드를 수행하기 위한 메모리 영역

*오버로딩/오버라이딩

1)오버로딩
:한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것
조건:
-1.메서드 이름이 같아야 한다.
-2.매개변수의 개수 또는 타입이 달라야 한다.
장점
-1.같은 기능을 하는 메서드들을 같은 이름으로 묶어줄 수 있다.
ex.println메서드
-2.메서드의 이름을 절약할 수 있다.
(이름을 짓는 고민을 줄일 수 있다.)

2)오버라이딩
: 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것
조건:
자손 클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와
-이름이 같아야 한다.
-매개변수가 같아야 한다.
-반환타입이 같아야 한다.

*접근제어자
-private: 같은 클래스 내에서만 접근이 가능함
-default: 같은 패키지 내에서만 접근이 가능함
-protected: 같은 패키지 내, 다른 패키지의 자손클래스에서 접근 가능함
-public: 접근 제한이 없다.

*package와 import

1)package
:클래스의 묶음.
-하나의 소스파일에는 첫 번째 문장으로 단 한번만 패키지 선언을 할 수 있음
-모든 클래스는 하나의 패키지에만 속해야함
-패키지는 점을 구분자로 하여 계층구조로 구성할 수 있음
-패키지는 물리적으로 클래스 파일을 포함하는 하나의 디렉토리

2)import
:사용하고자 하는 클래스의 패키지를 소스코드에 명시해주는 것

profile
안녕하세요 개발하는 알파카입니다. https://github.com/oh-taehyun

0개의 댓글