GiYeong

Java - 3 본문

CS/Java

Java - 3

gy2710 2022. 6. 8. 03:40

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

추상클래스

클래스 안에 추상 메서드가 하나 이상 포함되거나 abstract로 정의된 경우

 

인터페이스

모든 메서드가 추상 메서드인 경우

 

  추상 클래스 인터페이스
공통점 객체를 생성할 수 없다.
선언부만 있는 멤버는 하위 클래스에서 반드시 구현해야 한다.
차이점 일반 클래스에 추상 메서드가 추가된 형태 모든 메서드가 추상 메서드
일반 변수와 일반 메서드 포함 가능 추상 메서드와 상수만 포함 가능
추상 클래스를 상속받아 기능을 이용하고, 확장시키는 목적 함수의 구현을 강제하여 구현 객체의 같은 동작을 보장하는 목적
단일 상속
(Java는 모호성으로 인해 다중 상속을 지원하니 않음)
여러 개의 인터페이스를 구현 가능
(다중 상속처럼 동작)

 

클래스와 객체(인스턴스)의 차이

클래스

객체를 만들기 위한 설계도로서, 객체를 만들기 위한 변수와 메서드가 정의되어 있다.

객체

클래스에 선언된 모양 그대로 생성된 실체이며, 모든 인스턴스를 대표하는 포괄적인 의미이다.

인스턴스

클래스를 통해서 구현해야 할 대상(객체)이 실제로 구현된 구체적인 실체이다.

즉, 객체가 메모리에 할당된 것이다.

 

붕어빵 틀은 클래스, 붕어빵은 객체, 붕어빵이 만들어지는 과정은 인스턴스화, 틀을 통해 만들어진 각각의 붕어빵들은 인스턴스.

 

Java의 원시타입

 

접근 제어자

멤버변수, 클래스, 메서드, 생성자에 사용되어, 외부에서 접근하지 못하도록 제한하는 역할을 한다.

이는 외부의 접근으로부터 데이터를 보호하거나, 보여줄 필요가 없는 정보를 감추기 위해 사용된다.

1. public : 접근 제한이 없다.

2. protected : 같은 패키지 내에서, 또는 다른 패키지의 자손 클래스에서 접근이 가능하다.

3. default : 접근 제어자를 지정하지 않은 경우로, 같은 패키지 내에서만 접근이 가능하다.

4. private : 같은 클래스 내에서만 접근이 가능하다.

 

접근 제어자는 대상에 따라 사용할 수 있는 종류가 다르다.

 

객체 지향 프로그래밍(Object Oriented Programming)

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

 

객체 지향 프로그래밍의 장점

1. 코드 재사용이 용이하다.

남이 만든 클래스를 가져와서 이용할 수 있고, 상속을 통해 확장하여 사용할 수 있다.

2. 유지보수가 쉽다.

절자 지향 프로그래밍에서는 코드를 수정해야할 때 일일이 찾아 수정해야 하지만, 객체 지향 프로그래밍에서는 수정해야 할 부분이 클래스 내부에 멤버 변수 또는 메서드로 존재하기 때문에 해당 부분만 수정하면 된다.

3. 대형 프로젝트에 적합하다.

클래스 단위로 모듈화하여 개발할 수 있으므로 업무 분담이 쉽다.

 

객체 지향 프로그래밍의 단점

1. 처리속도가 상대적으로 느리다.

2. 객체가 많아지면 용량이 커질 수 있다.

3. 설계 시, 많은 시간과 노력이 필요하다.

 

객체 지향 프로그래밍 키워드 5가지

1. 클래스 + 인스턴스(객체)

2. 추상화

3. 캡슐화

4. 상속

5. 다형성

 

추상화

객체 지향 프로그래밍에서는 '추상화'라는 단어를 여러 군데 사용할 수 있다.

여기서 말하는 추상화는 추상 클래스나 추상 메서드를 의미하기보다는 클래스를 설계하는 것 자체로 '공통의' 속성이나 기능을 묶어 이름을 붙이는 것이다.

 

캡슐화

기능과 특성의 모음을 '클래스'라는 '캡슐'에 분류해서 넣는 것으로, 객체가 맡은 역할을 수행하기 위한 하나의 목적을 한데 묶는다.

캡슐화를 통해 코드를 재수정 없이 재활용하고 접근 제어자를 통한 정보 은닉이 가능하다. 

 

상속

부모 클래스의 속성과 기능을 이어받아 사용할 수 있도록하고, 기능의 일부분을 변경해야 할 경우, 상속받은 자식 클래스에서 해당 기능을 다시 수정(정의)해서 사용할 수 있도록 하는 것이다.

 

다형성

하나의 변수명, 메서드명 등이 상황에 따라 다른 의미로 해석될 수 있는 것으로, Overriding과 Overloading이 가능하다.

 

 

'CS > Java' 카테고리의 다른 글

Java - 6  (0) 2022.06.13
Java - 5  (0) 2022.06.11
Java - 4  (0) 2022.06.10
Java - 2  (0) 2022.06.07
Java - 1  (0) 2022.06.07
Comments