객체지향프로그래밍 (Object Oriented Programming)
*절차지향언어 ⇒ 주로 시스템 개발용 (C)
- 함수
- 알고리즘
- 자료구조 이해
*객체지향언어 ⇒ 응용프로그램/웹 개발용 (Java, C++)
- 클래스(Class) ⇒ 설계도 ⇒ 속성(Field)+기능(Method)
- 인스턴스(Instance) ⇒ 클래스로부터 생성되어 메모리에 할당된 각각의 객체(Object)
- 객체의 여러성질 : 다형성, 상속, 캡슐화,인터페이스, 추상화 등
클래스(Class) ⇒ 사용자 정의 타입
*객체참조변수 : 만들어진 객체(클래스)를 참조하는 변수
*new (객체생성 연산자) : 새로운 객체의 메모리 주소값 생성 => 인스턴스화(객체화)
int[] arr1 = new int[5];
String str1 = new String();
*자바 클래스 멤버(구성요소) : 필드, 생성자, 메소드
접근지정자 class 클래스명 {
필드(Field); // 속성(property)을 나타냄.
(생성자;) // 생략시 기본 생성자
메소드(Method); // 기능을 나타냄
}
*클래스 명명규칙 ⇒ 변수의 명명규칙과 유사
- 대문자로 시작
- 가급적 영어 사용
- _, $ 이외의 특수문자 사용 불가
- 공백 불가
- 단어조합시 대문자로 구분
*자바의 메모리 영역
- 메소드(Method) 영역
클래스의 생성과 소멸에 따라 함께 생성되고 소멸되는 영역
클래스, 전역변수, Static변수 정보가 저장되는 공간 ⇒ 공유공간
new 없이도 접근 가능
JVM이 실행되면서 생기는 공간 - 힙(Heap) 영역
new로 생성된 객체(인스턴스)의 데이터가 저장되는 영역
Garbage Collection(어디서도 참조되지 않는 객체를 자동으로 삭제)을 통해 자동으로 메모리 관리가 이뤄짐
참조타입(Reference Type)의 데이터가 저장되는 공간
동적으로 생성된 데이터가 저장되는 공간 - 스택(Stack) 영역
가장 나중에 들어온 데이터가 먼저 빠져나가는 후입선출(Last in First out)의 순서를 가짐
지역변수, 메소드의 매개변수와 임시 데이터가 저장되는 공간 - PC Register
스레드(Thread)가 생성되면서 생기는 공간 - Native Method Stack
Java가 아닌 다른 언어(C,C++)로 생성된 메소드를 실행할 때 필요한 공간
접근지정자(접근제한자) (Modify)
public : 모든 패키지(모든 영역)에서 접근 허용
private : 해당 클래스 내에서만 접근 허용 ⇒ 캡슐화(보안 및 유지보수), DB관련(DTO, Entity)
protected : 상속관계, 같은 패키지 내에서만 접근 허용
dafault : 같은 패키지 내에서만 접근 허용
* 접근범위 : public > protected > default > private
Setter & Getter : 외부클래스에서 private 필드에 접근할 때 사용 (Alt + Shift + S)
*Spring에서 ⇒ lombok.jar (setter&getter 자동화)
setter : 외부 객체에서 매개변수로 private 필드값을 초기화 해주는 메소드 (설정)
private String userId;
public void setUserId(String Id) {
this.userId=Id; // this : 해당 객체 자기자신으로 접근
}
getter : 외부 객체에서 private 필드를 호출 해주는 메소드 (호출)
private String userId;
public String getUserId() {
return this.userId;
}
오버로딩(OverLoading) : 같은 메소드명을 중복하여 사용하는 것
ex) System.out.println();
- 메소드의 선언부에서 메소드명이 같음
- 단, 메소드의 매개변수 형식(타입, 순서 등)이 달라야 함 (변수명이 달라도 형식이 동일하면 불가능)
- 반환타입(void, int, String 등)과는 상관 X
public void method1() {}
public void method1(int num1) {}
public void method1(int num1, String name) {}
public void method1(String name, int num1) {}
멤버
- 필드(속성)
1) 인스턴스 멤버(non-static)
객체(인스턴스)가 생성되면 생성되고, 객체가 소멸되면 종료.
클래스 내부에 존재하는 변수
new를 통해 생성된 객체로 인스턴스 멤버에 접근하는 방식
2) 클래스 멤버(static)
객체 생성없이, 클래스가 생성되면 생성되고 클래스가 소멸되면 종료
static ⇒ 프로그램이 종료되도 메모리에 남아있음. 고정된 값(수정 X)
★ static메소드는 static인 멤버만 접근 가능 (non-static메소드는 static/non-static 구분없이 접근 가능)
해당 클래스를 통해 클래스 멤버에 접근
*final 상수 : 값이 고정되어 수정이 불가능한 클래스멤버
선언과 동시에 상수값을 초기화하게 되며, 상수명은 대문자로 표기 - 메소드(기능)
프로그램의 기능(동작)을 구현하는 멤버.
해당 메소드의 정보를 나타내는 선언부와, 구체적인 동작을 명령하는 구현부로 이뤄짐
public void instanceMethod(String name) { // 선언부
System.out.println(name+"인스턴스메소드"); // 구현부
}
*지역변수(로컬변수) : 메소드 안에서 선언된 변수 > 매개변수
- 메소드가 생성되면 반드시 초기화 필요
- 메소드의 생성과 종료 시점이 같음
- 스택메모리에 저장
'자바 웹개발 국비과정 > Java Programming' 카테고리의 다른 글
다차원배열 (22.11.04) (0) | 2022.11.14 |
---|---|
배열 (22.11.03) (0) | 2022.11.14 |
반복문 (22.11.01) (0) | 2022.11.14 |
연산자, 제어문 (22.10.31) (0) | 2022.11.14 |
객체, 스캐너 (22.10.28) (0) | 2022.11.14 |