개발/Java

객체지향 프로그래밍의 4가지 요소

더덕2 2022. 9. 6. 14:03

객체지향

OOP(Object-Oriented-Programming)

 

1. 상속

2. 다형성

3. 캡슐화(정보은닉,접근제어지정자)

4. 추상화

-----------------------------------------------------------------------------------------------------------------------------------

 

1. 상속

두개의 클래스를 상위클래스와 하위클래스로 나뉘어 상위클래스(부모클래스)의 있는 정보를 하위클래스(자식클래스)와 공유하는 것을 말한다.

 

자바에서의 상속은 상속받을 클래스명 옆에 "extends"를 붙여주고 상위클래스(부모클래스)를 적어주면 된다.

 

2. 다형성

하나의 객체가 여러 가지 형태를 사질 수 있는 성질을 의미한다.

 

자바에서의 다형성은 한 타입의 참조변수를 통해 여러 타입의 객체를 참조할 수 있도록 만든 것을 의미한다.

타입변환을 위한 3가지 조건

1.서로 상속관계에 있는 상위 클래스 - 하위 클래스 사이에만 타입 변환이 가능 (★중요)

2.업캐스팅(하위클래스에서 상위클래스로의 타입 변환)은 형변환 연산자(괄호)를 생략할 수 있다.

3.다운캐스팅(상위클래스에서 하위클래스로 타입 변환)은 형변환 연산자를 반드시 명시 해야한다.

 

"instanceof" 연산자를 통해서 캐스팅이 가능한지 여부를 boolean타입으로 확인할 수 있습니다.

프로젝트의 규모가 커지고 클래스가 많아지면 캐스팅가능여부를 확인하기 어렵기 때문에 

instanceof연산자를 활용해야 합니다.

 

-참조변수 instanceof 변환할타입

 

주의사항

자식클래스타입의 인스턴스 참조변수를 상위클래스타입으로 변경하는건 가능하지만,

상위클래스타입의 인스턴스참조변수를 자식클래스타입으로 변경하는건 불가능하다고한다.

 

 

 

3. 캡슐화(정보은닉,접근제어지정자)

캡슐화는 관련된 클래스안의 속성값과 기능들 데이터들을 외부로부터 보호하는 것이다. 

 

접근제어자                                                                                  

private :  동일클래스에 접근가능                                                  

default :  동일패키지 내에서만 접근가능                                      

protected : 동일패키지 + 다른패키지 하위클래스 접근가능         

public : 전부 접근가능         

 

 

4. 추상화

자바에서는 주로 추상클래스와 인터페이스를 사용해서 추상화를 구현한다.

 

abstract 제어자를 통해서 추상화를 구현할 수 있다.

ex)abstract class test{}

 

어떤 클래스에 추상 메서드가 포함되어있는 경우 해당클래스는 자동으로 추상 클래스가 된다.

추상 메서드는 구체화되지않은 "미완성 메서드"이기 때문에 상속받아서 메서드를 오버라이딩하여야 한다.

그렇기 때문에 제대로 구현되기 전까지 객체 생성이 불가함.