OOL Features
OOL - 추상화(Abstraction)
추상화
같은 구조의 정보를 담는 변수들을 반복해서 사용해야 한다면, 변수를 매번 생성해줘야 하는 문제가 있다.
중요한 정보만을 표현함으로서 공통의 속성이나 기능을 묶어 이름을 붙여 반복적으로 사용할 수 있게 한다.
Java에서는 하나의 객체를 추상화하여 클래스를 만든다고 표현한다.
C언어에서
구조체가 Java에서의 클래스와 가장 가까운 개념
Java에서
구조체의 개념을 발전시켜 클래스라는 개념을 사용한다.
예시 - 학생 정보를 바탕으로 반을 배정하는 클래스
학생의 핵심 정보를 클래스의 변수로 지정한다.
반을 배정하는 기능을 하는 클래스는 반을 배정하는 행위를 해줄 수 있다. -> 함수
결론
클래스의 기능을 수행하기 위해 필요한 정보와 행위를 묶어서 설계하는 것을 추상화라고 한다.
OOL - 캡슐화 (Encapsulation)
내부의 동작 방법을 단단한 틀 안으로 숨겨 사용자에게는 사용 방법만을 노출시키는 것
변수가 될 수도, 메소드가 될 수도 있다.
불필요한 곳에는 직접 접근할 수 없도록 하여 리소스의 공유와 보안 사이의 균형을 맞출 수 있다.
정보 은닉을 통해 잘못된 수정을 막고, 사용자가 쉽게 사용할 수 있도록 만든다.
예시 - 인코딩 함수
main에서 접근할 수 있는 것은 Encoder 클래스이다.
encode() 함수에 접근할 수 있는 방법은 Encoder 클래스에 접근하는 것이다.
C언어 vs JAVA
c언어의 경우 헤더파일을 통해 접근
Java는 클래스를 통해서 접근한다.
공통적으로 접근 제한자라는 것을 통해서 이루어지게 된다.
OOL - 상속
재사용성을 극대화시키기 위한 장치
부모클래스의 속성을 그대로 물려받음 (속성에 따라 다를 수 있음)
OOL - 다형성
하나의 클래스나 메소드가 다양한 방식으로 동작이 가능한 것을 의미한다
부모클래스가 자식 클래스의 값으로 대체되는 오버라이딩
같은 메소드가 매개변수에 따라 다르게 동작하는 오버로딩
오버라이딩
부모클래스에서 상속받은 내용을 자식클래스에서 재정의
재정의한 내용을 다시 부모클래스에서 덮어쓸 수 있도록 한다.
오버로딩
같은 메소드가 parameter 구성에 따라서 다른 행위를 할 수 있음
Last updated