☕JAVA/🔎 공부 [JAVA]

[JAVA] 기초 - 다시 정리하는 기본 개념

디카페인라떼 2022. 8. 18. 14:24

분명히 공부도 하고 정리도 했는데 남는 게 없다.. 원래 이런가?

정의를 정확하게 외우는 것은 기술면접 전에 해야할 일이고 

어떤때에 어떤 걸 써야 한다 정도로 알아두기!!

 

  • 객체지향 프로그래밍 OOP

프로그래밍에 사용 될 데이터의 상태와 행위를 객체로 만들어, 객체 간의 상호작용을 통해 비지니스 로직을 구성하는 프로그래밍 기법 

 

- 특징

  • 상속 : 자식클래스가 부모클래스의 기능과 상태를 물려받아, 그대로 사용하거나 필요한 부분만 수정할 수 있도록 하는 것
  • 추상화 : 불필요한 부분을 지우고 필요한 핵심만을 정의해 두는 것. 사물을 추상화 한 후 필요한 객체에서 상속 받아 필요에 맞게 기능을 재정의해 사용할 수 있도록 함
  • 캡슐화 : 비슷한 속성과 메소드들을 하나의 클래스로 모은 것. 외부 접근으로부터 데이터를 지킴
  • 다형성  : 같은 이름을 가지더라도 다른 기능을 구현할 수 있는 것. (오버로딩, 오버라이딩, 인터페이스)

 

 - 장점  

객체를 이용하여 (클래스) 코드 재사용이 용이하고 상속을 통한 확장이 가능

클래스 단위로 모듈화, 작게작게 나눌 수 있기 때문에 유지보수에도 좋고 분업에도 좋음

 

- 단점

객체가 많아질수록 용량이 커질 수 있고

객체를 올바르게 설계하는데 많은 노력과 시간이 필요

 

 

  • 객체

클래스에 의해 메모리에 올라간 것!

(참조형타입-모든클래스는 참조형) 변수명 = new 연산자+생성자(인스턴스)

=> 객체를 참조하는 변수가 선언됨!

 

  • 클래스

객체를 생성하기 위한 틀!! public class 클래스명 {}

 

  • 메소드

클래스가 가진 기능 , 객체의 기능! 클래스 안에 선언됨

public 리턴타입 메소드명 (매개변수) { 구현 }

 

  • 상속

자식클래스가 부모클래스의 기능과 상태를 물려받아, 그대로 사용하거나 필요한 부분만 수정할 수 있도록 하는 것

=> 오버라이딩

 

  • 오버로딩 vs 오버라이딩

=>둘 다 하나의 이름 (기능)이 여러 역할 (구현)을 할 수 있도록 할 수 있게 해주어 객체지향의 다형성의 특징을 가지게 함.

 

오버로딩  :  같은 이름을 가지는 메소드를 여러개 가지는 것

이름은 같지만 매개변수의 개수, 타입 등은 다르게 함으로써 다른 기능으로 재정의 가능

메소드 이름 1개로 여러 기능을 재정의 가능하므로 가독성이 좋아짐

 

오버라이딩 : 하위 클래스에서 상위 클래스의 메소드를 재정의하여 사용하는 것

필요한 부분만 재수정하여 원하는 기능으로 구현하는 것

중복코드를 줄이고 기능 확장에 이점!

 

  • 추상화클래스

abstract로 선언되거나 추상 메소드를 하나 이상 포함한 클래스!

추상메소드란 선언부만 있고 구현부가 없는 메소드이며 하위 클래스에게 메소드의 구현을 강제함.

하나만 상속 가능!

 

  • 생성자

모든 클래스는 인스턴스화 될 때 생성자를 사용한다!

리턴타입이 없다 / 따로 생성자를 만들지 않으면 기본생성자가 컨파링시 자동으로 만들어짐.

그러나 생성자를 하나라도 만들었다면 기본생성자는 자동으로 만들어지지 않음. 

=> 객체가 될때 필드를 초기화하는 역할

어떤 객체가 생성과 동시에 유효함을 보장하는 역할 

=> 접근제한자 메소드이름 ([매개변수]) {

//실행 코드

}

 

  • 확장성?

 

  • 접근제어자

클래스, 인터페이스, 멤버변수, 함수 등의 접근을 제어하는 지시어.

접근 제어자를 사용함으로써 외부 객체의 무분별한 접근으로부터 내부 데이터를 보호 할수 있음 (데이터 무결성)

public : 전체공개, 모든 패키지, 클래스 접근 허용

protected : 같은 패키지, 모든 클래스 접근 허용 (다른 패키지인 경우 상속받은 경우 허용)

dafault : 같은 패키지 내 클래스만 접근허용

private : 같은 클래스 내 접근만 허용

 

=>사용하는 이유
 객체지향 프로그래밍은 객체들간 상호작용을 코드로 표현 한 것인데 이때 객체들간의 관계에 따라서 접근 할 수 있는 것과 아닌 것, 권한을 구분할 필요성이 생김. 클래스 내부에 선언된 데이터의 부적절한 사용으로부터 보호하기 위해서 사용

 

  • optional

 

  • stream

 

  • list

 

  • set

 

  • map

 

'☕JAVA > 🔎 공부 [JAVA]' 카테고리의 다른 글

[JAVA] 제네릭 Generic  (0) 2022.08.26
[JAVA] Map, HashMap  (0) 2022.08.24
[JAVA] objects.equals() 정리  (0) 2022.08.17
[JAVA] 예외처리(Exception) / Throws  (0) 2022.08.13
[JAVA] 내부클래스  (0) 2022.08.12