예시
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라고 한다.
'자바 객체지향 문법' 카테고리의 다른 글
자바 객체지향 문법 - 팩토리 메서드 패턴, 자바 리플렉션 (0) | 2023.02.16 |
---|---|
자바 객체지향 문법 - final, String, 접근제한자, 인터페이스 (0) | 2023.02.16 |
자바 객체지향 문법 - 생성자, 추상 (0) | 2023.02.16 |
객체지향 문법 - 필드 선언 (0) | 2023.02.16 |
Java 객체지향 프로그래밍 기초: 클래스, 메서드, 객체와 객체 사이의 커뮤니케이션 이해하기 (0) | 2023.02.14 |
댓글