객체를 모르는 자바 개발자 . .
발표에서 질문주셨던
- 객체 간의 관계(사용관계, 집합관계)
- String과 new 연산자
위 내용을 추가했습니다!
https://velog.io/@esgibtnureins/OOP-%EB%B0%9C%ED%91%9C%EC%9E%90%EB%A3%8C-%EB%B3%B4%EC%99%84
keyword
객체(object)
클래스(class)
추상화(abstraction)
캡슐화(encapsulation)
상속(inheritance)
다형성(polymorphism)
연관(association)
집약(aggregation)
구성(composition)
부품에 해당하는 객체를 만들고, 이것들을 조립해서 완성된 프로그램을 만드는 기법을 OOP라고 함.
객체의 개념
객체의 상호작용
객체 지향 == 객체 중심적
'클래스를 어떻게 짤까?' ❌
'현실에 존재할 객체가 어떻게 동작할까?' ⭕️
'메모리 상에 존재하는 객체를 어떻게 만들까? 그리고 어떻게 이용할까?' ⭕️
필드
(속성)과 메소드
(동작)으로 구성클래스
(설계도)와 필드&메소드
(재료)를 가지고 만들어진게 객체!메소드
접근 제어자
사용new 연산자로 생성된 객체는 메모리 힙(Heap) 영역에 생성됨
(현실 세계에서 물건의 위치를 물건을 사용할 수 없듯, 객체 지향 프로그램에서도 메모리 내에서 생성된 객체의 위치를 모르면 사용할 수 없음)
클래스는 객체가 되어야 사용 가능. 클래스는 동작과 속성 X
Heap 메모리의 Book 객체를 사용하려면 반드시 Book 객체를 참조하는 참조 변수 필요
클래스(설계도)와 필드&메소드(재료)들을 통해 만들어진게 객체
Book b = new Book();
Book은 클래스인가 참조 자료형(참조 타입)인가?
클래스와 인스턴스의 차이점
클래스는 원형. 인스턴스는 클래스를 복제한 것.
인스턴스는 메소드를 호출함을 통해 인스턴스를 조작
예제 코드
static
키워드가 붙은 필드
클래스 정보를 읽어들일 때 static한 필드는 static 메모리 영역에 따로 저장됨
Q. static 메서드에서 static 메소드 호출이 가능할까?
A. Yes
Reason : static끼리는 객체없이 서로 호출이 가능하기 때문이다.
Q. static 메서드에서 인스턴스 변수 사용이 가능할까?
A. No
Reason : Static메서드는 객체를 생성하지않고 사용하고 인스턴스는 객체를 생성해야 사용할 수 있는데, static 메서드에서 인스턴스 변수를 사용할 경우 객체가 생성되어있지 않을 수 있기 때문이다.
Q. static 메서드에서 인스턴스 메서드 호출이 가능할까?
A. No
Reason : Static메서드는 객체를 생성하지않고 사용하고 인스턴스는 객체를 생성해야 사용할 수 있는데, static 메서드에서 인스턴스 메서드를 사용할 경우 객체가 생성되어있지 않을 수 있기 때문이다. (위와 동일 개념)
좋은 글 잘 봤습니다~ 제 블로그도 놀러오세요
^^