1. 캡슐화
public Capsule { public int num1=0; priavate int num2=3; protected int num3= 5; int num4 =5; }
자주 같이 쓰는 데이터와 기능들을 모아놓고 객체라고 부르고,
객체를 껍질로 감싸 외부에서 객체의 기능과 데이터에 함부로 접근하지 못하도록 하는 것.
첫번째 방법으로는 접근지정자로 캡슐화를 수행할 수 있다. 전역변수와 지역변수 또한 캡슐화의 일종!!
두 번째 방법으로는 getter/setter 메서드를 통해 구현할 수 있다.
즉, 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐(capsule)로 만들어 데이터를 외부로부터 보호하는 것을 의미한다.
2. 추상화
public interface Abstract { public int getSum(int a,int b); public int getMulti(int a,int b); }
공통적인 기능과 특성만을 추출하여 각자 용도에 맞게 제각기 사용할 수 있도록 하는 것. 즉, 객체의 공통적인 속성과 기능을 추출하여 정의하는것을 의미한다.
자바에서 추상화를 구현할 수 있는 문법 요소로는 추상 클래스(abstract class)와 인터페이스(interface)가 있다.
3. 다형성
public int getSum(int a,int b){ return a+b; } public int getSum(int a,int b,int c){ return a+b+c; }
하나의 이름 아래에서 여러가지 기능을 할 수 있도록 하는 것. 예시 코드와 같이, 같은 이름의 메서드가 상황에 따라 다른 역할을 수행할 수 있다. 즉, 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있음을 의미한다.
4. 상속성
public class Calculate implements Abstract{ // 구현도 일종의 상속아닌가 @Override public int getSum(int a, int b) { return a+b; } @Override public int getSum(int a, int b, int c) { return a+b+c; } }
어떤 객체에서 소유한 자원을 다른 객체에서도 재사용할 수 있도록 하는 것.
기존의 클래스를 재활용하여 새로운 클래스를 작성하는 문법요소를 말한다. 공유하는 데이터나 기능을 여러 번 작성할 필요없이 한 번만 정의한 뒤 이에 접근하여 재사용한다.