객체지향언어 특징
1. 상속 : 상위객체가 하위객체에게 필드와 메소드를 물려줘서 상속받아 사용할 수 있는 것
공통적인 내용이 있는 클래스에서 상속받아 사용할 수 있어서 코드의 '재사용'에 용이합니다.
2. 캡슐화 : 외부의 잘못된 사용으로 내부 객체가 손상되지 않도록 접근지정자를 통해 '정보은닉'을 하는것
객체의 필드,메소드를 하나로 묶고 실제 구현한 내용을 감추는 것
높은 응집도와 낮은 결합도를 유지할 수 있도록 설계
*응집도: 클래스나 모듈 안의 요소들이 얼마나 밀접하게 관련되어 있는지 나타내는것
*결합도 : 어떤 기능을 실행하는데 다른 클래스나 모듈들에 얼마나 의존적인지 나타내는 것
캡슐화를 통해서 낮은 결합도를 유지할 수 있게됨
3. 다형성 : 하나의 타입에 여러객체를 대입해서 다양한 기능을 이용할 수 있도록 하는것
같은 메시지를 받았을떄 각자의방식으로 동작할 수 있다.
java언어 특징
객제지향 프로그래밍 언어라 상속, 캡슐화, 다형성 이 가능한 특징을 가지고 있다.
그리고 JVM만 설치하면 컴퓨터의 운영체제에 상관없이 운영체제게 독립적으로 작동하여 이식성이 높습니다.
접근제어자
멤버 or 클래스에 사용되어, 외부로부터의 접근을 제한 (클래스 / 멤버변수 / 메서드 / 생성자)
1. private : 같은 클래스 내에서만 접근 가능
2. default : 같은 패키지 내에서만
3. protected : 같은 패키지 & 다른 패키지의 자식클래스에서 접근 가능
4. public : 접근 제한이 전혀 없음
클래스 / 추상클래스 / 인터페이스 차이
클래스가 설계도라면
추상클래스는 미완성 설계도이며
인터페이스는 밑그림 정도로 생각하면 된다.
클래스의 경우 속성과 기능들로 완성된 설계도이기 때문에 인스턴스를 만들 수 있지만
추상클래스와 인터페이스의 경우 미완성이기 때문에 인스턴스를 생성할 수 없다.
추상클래스는 미완성 메서드를 포함하지만
인터페이스는 선언부만 있는 메서드와 상수만을 가질 수 있으며 클래스를 작성하는데 도움을 줄 목적으로 사용된다.
인터페이스 추가 설명으로는 관계없는 클래스 간 관계를 맺어주고 표준화를 시키며 개인작업이 가능하게 해줘 프로그래밍의 시간을 단축시킬 수 있다.
( class 클래스명 / abstract class 클래스명 / interface 인터페이스명 )
클래스 | 추상클래스 | 인터페이스 | |
비유 | 설계도 | 미완성설계도(목차) | 밑그림 |
목적 | 구현 | 목차 | 목차 |
인스턴스 생성 | 가능 | 불가능 | 불가능 |
구성 | 속성(변수), 기능(메소드) | 일반메소드,상수,변수필드, | only 추상메소드, 상수 |
다중상속 | 불가능(extends) | 불가능(extends) | 가능(implements) |
'🌱 Computer Science > Programming' 카테고리의 다른 글
Pycharm Black 설정 및 사용법 가이드 (1) | 2022.03.22 |
---|---|
한창 힙했던 언어 Python과 요즘 가장 힙한 언어 Rusty (0) | 2021.12.03 |
[Programming] Python과 Java 차이점 | 객체지향vs절차지향 (0) | 2021.08.04 |
[알고리즘] 브루트포스(brute force) (0) | 2021.06.10 |
[Java] LOMBOK(롬복)란? (0) | 2021.04.05 |
[Programming] 오버라이딩(Overriding) Vs 오버로딩(Overloading) (0) | 2020.01.12 |