Java 와 객체지향

joona95·2023년 11월 25일

Java 이론 공부

목록 보기
2/7
post-thumbnail

📌 Java 란 어떤 언어인가?

Java란 웹 어플리케이션 개발에 많이 사용되는 프로그래밍 언어이다. Java는 처음부터 객체 지향 언어로 개발된 프로그래밍 언어이다. JVM을 이용하여 운영체제와 독립적으로 동작할 수 있어서 이식성이 높다.

Java의 장점

  • 객체 지향 언어이다.

  • 이식성이 높다.

  • 컴파일 언어인 동시에 인터프리터 언어이다.

  • 메모리를 자동으로 관리한다.

  • 오픈소스 라이브러리가 풍부하다.

Java의 단점

  • 실행을 위해 JVM을 거쳐야 하므로 다른 언어에 비해 실행 속도가 느리다.

  • 예외 처리가 잘되어 있지만 개발자가 일일이 처리해줘야 한다.

  • 다른 언어에 비해 길이가 긴 편이다.

  • 개발자가 하드웨어에 직접 접근할 수 없어서 정밀한 하드웨어 조정은 불가능하다.

📌 객체란?

  • 객체는 어떠한 속성값과 행동을 가지고 있는 데이터이다.

    • 속성은 객체를 나타낼 수 있는 특징으로 변수에 해당된다.

    • 행동은 객체가 할 수 있는 동작으로 메서드에 해당된다.

  • 클래스가 실제로 구현된 인스턴스를 의미한다.

📌 클래스와 객체의 차이는?

  • 클래스는 개념이고, 객체는 개념을 구현한 것이다.

📌 객체 지향 언어란?

  • 객체지향 언어란 객체를 만들고 객체끼리 관계를 맺어 상호작용을 할 수 있도록 하는 것이다.

  • 객체를 조립하여 전체 프로그램을 만드는 조립식 프로그래밍이다.

📌 객체 지향 언어의 특징 4가지는?

추상화

  • 공통적인 속성 및 행위를 추출하고 정의하는 것

  • 복수의 클래스가 같은 성격을 가지고 있을 때 공통된 기능들을 정의하려고 하는 것

  • Java에서 추상화를 구현할 수 있는 방법으로는 추상 클래스와 인터페이스가 있다.

    • 추상 클래스와 인터페이스는 존재 목적이 다르다.

      • 추상 클래스는 상속 받아서 기능을 확장시키기 위한 것

      • 인터페이스는 구현을 강제하기 위한 것

캡슐화

  • 서로 연관성이 있는 속성과 행위들을 하나의 캡슐로 만들어 외부로부터 보호하는 것

  • 캡슐화를 하는 이유는 정보의 보호와 은닉을 위해서다.

  • Java에서 정보를 은닉하기 위해서 접근제어자를 활용하여 필요한 것만 보여주도록 할 수 있다.

  • Java에서 정보를 보호하기 위해서 getter/setter를 활용해서만 내용을 변경할 수 있도록 할 수 있다.

상속

  • 클래스의 속성과 행위를 하위클래스가 물려받아 동일하게 사용할 수 있도록 하는 것

  • 코드의 재사용성과 확장성을 높여준다.

  • 상속은 기능이 동일할 때 사용하고, 추상화는 개념이 동일할 때 사용한다.

  • 부모 클래스에 대해 너무 강한 결합이 생기고, 캡슐화를 깨뜨린다.

  • 상속의 단점을 커버하고 장점을 취하기 위해 조합을 사용한다.

    public class A {
      private B b;
    }
    • 조합은 클래스 내부에 필드로 다른 클래스의 인스턴스를 참조하도록 한다.

    • 조합은 메서드를 호출하는 형식으로 작동하므로 캡슐화를 깨뜨리지 않는다.

    • 조합은 기존 클래스의 변경에 따른 영향이 적어진다.

다형성

  • 타입의 다형성: 하나의 타입에 여러 가지 타입이 들어갈 수 있는 것

    • 인터페이스 타입으로 선언된 객체에 각각 구현된 다른 타입의 객체를 넣을 수 있는 것

    • 부모 타입에 자식 타입이 들어갈 수 있는 것

  • 메소드의 다형성: 오버 로딩과 오버 라이딩

    • 오버 로딩: 동일한 이름의 메서드를 여러 개 정의할 수 있는 것. 매개변수의 타입이나 갯수가 달라야 한다.

    • 오버 라이딩: 상위 클래스에 정의된 메서드를 하위 클래스에서 재정의하는 것

0개의 댓글