IT 시사 및 CS 지식/IT 시사 및 CS 지식

[CS스터디]220607 Java - 2

GAEBAL 2022. 6. 8. 01:56
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