객체 지향 프로그래밍
객체지향 프로그래밍 영어를 줄여서 OOP라고도 함
변수와 메소드로 그룹핑된 하나하나가 객체 ~> 재활용성 UP
내가 원하는 정보만 추출해내는 것 => 추상화
부품화 즉 객체로 나누는 것이 무조건 유용한 것을 아님 ex) 컴퓨터(부품화O) -> 핸드폰(부품화X)
- 정보의 은닉화(캡슐화) : 내부 동작 방법을 케이스로(객체) 숨기고 사용 방법(메소드)만 노출
- 인터페이스 : 규격이 표준화돼있어 서로 연결 가능. 이러한 연결점이 인터페이스
클래스와 인스턴스 그리고 객체
클래스 = 설계도(붕어빵틀), 인스턴스 = 제품(붕어빵)
중복의 제거(재활용성 가독성 UP) 하려면 메소드 사용을 해야하고,
메소드를 사용하여 중복을 제거하는 것이 리팩토링(동일동작이지만 코드를 수정하여 효율UP)
인스턴스 new 연산자를 통해 생성
객체데이터타입 인스턴스명 = new 객체데이터타입();
객체 안 메소드 호출 방법은 인스턴스명.메소드명(파라미터...);
객체는 독립된 하나의 프로그램이라고 봐주면 이해하기 수월
this는 클래스 내의 전역변수? this가 없는 건 파라미터로 넘어온 거
클래스 멤버와 인스턴스 멤버
member = 구성원
객체 = 변수 + 메소드
클래스의 멤버 변수 | 인스턴스의 멤버 변수 |
인스턴스마다 같음 | 인스턴스마다 다름 |
PI와 같이 상수를 클래스의 멤버 변수로 저장
static을 붙이면 클래스의 멤버 변수가 되고 인스턴스마다 동일한 값을 가진다는 의미
final 붙이면 변경 불가능하게 만들어줌
바뀌지 않는 값은 굳이 new로 객체를 생성할 필요가 없으니 클래스 멤버 변수로 생성해서 메모리 아끼기
클래스 메소드도 static을 붙여주면 됨
- 인스턴스 메소드는 클래스 멤버에 접근할 수 없다
- 클래스 메소드는 인스턴스 멤버에 접근할 수 없다
'JAVA > [생활코딩] 자바' 카테고리의 다른 글
[생활코딩] 예외 처리, Object 클래스, 상수와 enum (0) | 2023.04.30 |
---|---|
[생활코딩] 접근 제어자, abstract, final, 인터페이스, 다형성 (1) | 2023.04.17 |
[생활코딩] overriding, overloading, 클래스 패스, 패키지, API와 API 문서 보는 법 (0) | 2023.04.09 |
[생활코딩] 자바 유효범위, 초기화와 생성자, 상속, 상속과 생성자 (0) | 2023.03.31 |
[생활코딩] 자바 숫자와 문자, 변수, 주석과 세미콜론, 데이터 타입, 상수의 데이터 타입, 형변환, 연산자, 비교와 Boolean (0) | 2023.03.21 |