캡 - 캡슐화(Encapsulation) : 정보은닉(information hiding)
상 - 상속(Inheritance) : 재사용
추 - 추상화(Abstraction) : 모델링
다 - 다형성(Polymorphism) : 사용편의
추상화:
- '추상화'란, 어떤 실체로부터 공통적인 부분이나 특성들을 한 곳에 모은 것을 의미한다.
- 공통의 속성이나 기능을 묶어 이름을 붙이는 것
- 클래스들의 중요하고 공통된 성질들을 추출하여 슈퍼 클래스를 선정하는 개념이다
예를 들어,
개 | 고양이 |
속성 : 이름, 나이 | 성 : 이름, 나이 |
기능 : 짖는다 | 기능 : 짖는다 |
이런 공통적인 기능이나 속성이 있을때 animal이라는 추상 class에 구현해놓고 상속시키서 모델링 한다면 중복 코드가 현저히 줄어들 것이다.
상속 :
- 상위 개념의 특징을 하위 개념이 물려받는 것
다형성 :
- 다형성이란 하나의 객체나 메소드가 여러가지 다른 형태를 가질 수 있는 것을 말합니다.
- 자바에서 다형성을 나타내는 것으로는, 오버라이딩과 오버로딩 그리고 상속받은 객체의 참조변수 형변환등이 있다.
- 자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여 구현하고 있습니다.
상속받은 객체에 대해서 형변환이 의미하는 것은, 객체에 속한 멤버들에 대한 사용범위가 달라진다는 것을 의미합니다.
- 업캐스팅(upcasting) : 자식클래스의 타입의 레퍼런스 변수를 부모클래스 타입으로 형변환 하는 것. (타입변환 구문 생략 가능, 자동 형변환 됨)
- Person p1 = new Dancer() [형변환 생략]
- 다운캐스팅(downcasting) : 부모클래스 타입의 레퍼런스 변수를 자식클래스 타입으로 형변환 하는 것. (타입변환 구문 생략 불가, 형변환 타입을 명시해야됨)
- Dancer d1 = (Dancer) p1 [형변환 반드시!!!]
더보기
public class Polymorphism {
public static void main(String[] args){
Parent p = new Child();
p.printOut();
}
}
class Parent {
void printOut() {
System.out.println("parent");
}
}
class Child extends Parent{
@Override
void printOut() {
System.out.println("child");
}
}
// 결과 : child
캡슐화 (Encapulation) :
- 관련있는 변수와 메소드를 하나의 클래스로 묶어 주고, 접근 제어 지시자를 사용해 외부로부터 정보를 접근할 수 없게 하는 방법이다.
- 캡슐화의 가장큰 장점은 정보은닉(Information Hiding)에 있습니다.
- 캡슐화를 통해 외부에서 내부의 정보에 접근하거나 변경할 수 없게 직접적인 접근을 막고 객체가 제공하는 필드와 메소드를 통해서만 접근이 가능하다.
출처: https://server-engineer.tistory.com/219 [임대리 개발일지:티스토리]
자바의 접근 제어자
public : 접근 제한 없음
protected: 동일한 패키지 내에 존재하거나 파생 클래스에서만 접근 가능
default : 아무런 접근 제한자를 명시하지 않으면 default 값이 되며, 동일한 패키지 내에서만 접근 가능
private: 자기 자신의 클래스 내에서만 접근 가능
'안드로이드 자바 코틀린 기초 지식 > 자바 기초지식' 카테고리의 다른 글
String, StringBuilder, StringBuffer 차이 (0) | 2023.03.21 |
---|---|
자바의 특징과 장단점, 객체지향 언어란??, 클래스와 객체 (0) | 2022.11.30 |
JVM 이란? (0) | 2022.11.28 |
추상클래스, 인터페이스 (0) | 2022.08.04 |
제어자와 접근 제어자 (0) | 2022.08.03 |