본문 바로가기
자바 객체지향 문법

Java OOP 핵심 개념 다루기: 추상화, 캡슐화, 오버로딩, 상속, 오버라이딩 및 프로퍼티

by 플라퉁 2023. 2. 14.
728x90
반응형

예시 

Book b = new Book();

 

Heap 이라는 메모리에 Book 인스턴스가 하나 생성되게 됨

Heap 메모리에 생성된 Book 인스턴스를 참조하는 변수b인 것

변수 b 앞의 Book레퍼런스 타입이라고 함

Book()은 생성자라고 함 

new Book(); 은 인스턴스를 만들라는 것

new Book(); 만 선언 하면 메모리에는 있지만 사용할 수 없는 쓰레기(garbage)라고 함

 

추상화란 ? 

 - 중요한 것은 남기고 불필요한 것은 제거한다.

 

캡슐화란 ?

 - 관련된 것을 잘 모아서 가지고 있는 것을 캡슐화(encapsulation)라고 말합니다. 관련된 것을 잘 

모아서 가지고 있을수록 응집도(Cohesion)가 높다고 표현한다.

 

오버로딩이란 ?

 - 같은 이름의 메소드가 여러개 있는데 매개 변수의 타입이 다르거나 매게 변수의 개수가 다른 경우를 

Overloading 했다고 말합니다.

 - 만약 정수를 출력하는 메소드 이름은 printInt(), 문자열을 출력하는 메소드 이름은 printString()처럼

어떤 타입을 출력하느냐에 따라서 메소드 이름이 달라진다면 사용자는 외워야 할 메소드 수가 늘어나서 힘들어질 것

 

상속이란 ? 

 - 상속이란 일반화와 확장이라는 개념을 합한 것이라고 생각하면 됩니다. 부모클래스를 상속받는다는 것은 부모가 가지고

있는 것을 자식이 물려받아 사용할 수 있다는 것을 의미 합니다.

 - 상속은 굉장히 강한 결합입니다. 상속은 반드시 써야만 할때 쓰고 되도록 사용 안하는 것이 좋다.

 결합도는 낮추고, 응집도는 높여야 함 

 - 상속 선언 방법

[접근제한자] [abstract | final] class 클래스명 extends 부모클래스명 {

//클래스 블록

}

 - 아무것도 상속받지 않으면 자동으로 java.lang.Object를 상속 받는다.

모든 클래스는 Object의 자손이다.

 

 - 부모타입으로 자손타입을 참조할 수 있다.

 ex) Car car = new Bus();

 

메소드 Overriding이란 ?

 - 상위 클래스의 메서드를 하위 클래스가 재정의 하는 것

 - 메서드의 이름은 물론 파라메터의 갯수나 타입도 동일해야 하며, 주로 상위 클래스의 동작을 상속받은 하위 클래스에서 변경하기 위해 사용된다.

 - 메서드가 오버라이딩 되면 무조건 자식의 메소드가 실행된다.

 

프로퍼티 ,setter,getter 란 ?

 - 필드를 직접 접근 하는 것은 정보 은닉 관점에서 좋지 않다.

 - 외부에서 접근 하지 못하도록 public 접근제한자를 private 접근제한자로 수정한다.

 - private한 필드를 접근하기 위해 제공하는 메서드를 setter, getter라고 한다.

 

728x90
반응형

댓글