728x90
인터페이스와 추상 클래스
공통점
상속 받는 클래스 혹은 구현하는 인터페이스 안에 있는 추상 메서드를 구현하도록 강제한다.
차이점
추상클래스 인터페이스
추상클래스 | 인터페이스 |
extends | implements |
하나 이상의 메서드가 추상 메서드이면 | 모든 메서드가 추상 메서드 |
추상 메서드 1개 이상, 일반 변수, 일반 메서드 가능 | 추상 메서드, 상수만 선언 가능 |
생성자, 일반 변수 가질 수 있음 | 생성자, 일반 변수를 가질 수 없음 |
존재 목적이 추상 클래스를 상속받아서 기능을 이용하고, 확장시키는데 있음 | 함수의 껍데기만 있음. 그 이유는 그 함수의 구현을 강제하기 위해서임. 구현을 강제하므로써 구현 객체의 같은 동작을 보장할 수 있음! |
상속은 슈퍼 클래스의 기능을 이용하거나 확장하기 위해서 사용되고, 다중 상속의 모호성 때문에 하나만 상속받을 수 있음 | 해당 인터페이스를 구현한 객체들에 대해서 동일한 동작을 약속하기 위해 존재함 |
자바는 모호성 때문에 다중 상속을 지원하지 않음 -> 인터페이스는 여러 개의 인터페이스 구현 가능 (이걸로 다중 상속 비슷하게 함)
클래스와 객체(인스턴스)의 차이
클래스를 통해서 인스턴스를 찍어낸다고 생각하면 편함!
- 클래스
- 객체를 만들기 위한 설계도, 즉 연관되어 있는 변수와 메서드의 집합
- 인스턴스
- 클래스를 바탕으로 구현된 구체적인 실체
- 객체가 메모리에 할당되어 실제로 사용되는 객체
자바의 원시 타입들
종류 | 데이터형 | 크기(byte / bit) | 표현 범위 |
논리형 | boolean | 1 / 8 | true 또는 false |
문자형 | char | 2 / 16 | '\u0000' ~ 'uFFFF' (16비트 유니코드 문자 데이터) |
정수형 | byte | 1 / 8 | -128 ~ 127 |
정수형 | short | 2 / 16 | -32768 ~ 32767 |
정수형 | int | 4 / 32 | -2147483648 ~ 2147483647( -21억 ~ + 21억) |
정수형 | long | 8 / 64 | -9223372036854775808 ~ 9223372036854775807(-100경 ~ + 100경) |
실수형 | float | 4 / 32 | 1.4E-45 ~ 3.4028235E38 |
실수형 | double | 8 / 64 | 4.9E-324 ~ 1.7976931348623157E308 |
접근 제어자
- public : 어디서든 접근이 가능
- protected : 동일 패키지 혹은 상속받은 외부 패키지 클래스에서 사용 가능
- (default) : 동일 패키지 내에서만 접근 가능
- private : 해당 클래스 내에서만 접근 가능
객체지향
OOP란
프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법
장점
- 유지보수 쉬움
- 대형 프로젝트에 적합
- 코드 재사용 용이
단점
- 객체가 많으면 용량이 커질 수 있음
- 설계시 많은 시간과 노력 필요
- 처리 속도가 상대적으로 느림
OOP 특징
- 캡슐화(Encapsulation)
- 하나의 객체에 대해 그 객체가 특정한 목적을 위해 필요한 변수나 메소드를 하나로 묶는 것을 의미한다.
- 함수를 관련성 있게 클래스에 구성
- 추상화(Abstraction)
- 추상클래스(Abstract Class)와 인터페이스(Interface)
- 다형성(Polymorphism)
- 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 함
- 코드의 재사용, 코드길이 감소가 되어 유지보수가 용이
- 오버라이딩(Overriding)
- 부모클래스에서 상속받은 서브클래스 즉 자식클래스에서 부모클래스,즉 상위클래스에서 만들어진 메서드를 자신의 입맛대로 다시 재창조해서 사용
- 오버로딩(Overloading)
- 하나의 클래스 안에서 같은이름의 메서드를 사용하지만 각 메서드마다 다른 용도로 사용되며 그 결과물도 다르게 구현
- 상속성(Inheritance)
- 상속이란 기존 상위클래스에 근거하여 새롭게 클래스와 행위를 정의할 수 있게 도와주는 개념
- 인터페이스는 다중 상속 가능
728x90