일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 오버라이딩
- css grid
- jsp구동원리
- Grid
- 조건문
- 참조타입
- 반복문
- CSS
- for문
- jsp
- 접근제한자
- UTF-8
- 부트스트랩
- Instance
- 기본타입
- Static
- 자바
- html
- align
- display:flex
- 생성자
- 시맨틱태그
- flex
- Java
- java sever page
- Bootstrap
- html구조
- 추상클래스
- 데이터타입
- 메소드
- Today
- Total
개발자를 꿈꾸는 여정
[JAVA 자바] 5. 클래스(class) 본문
1. 객체 지향 프로그래밍
- 객체 지향 프로그램 : 부품 객체를 먼저 만들고 이것들을 하나씩 조립해 완성된 프로그램을 만드는 기법
- 객체(Object)란?
- 물리적으로 존재하는 것 (자동차, 책, 사람)
- 추상적인 것(회사, 날짜) 중에서 자신의 속성과 동작을 가지는 모든 것
- 객체는 필드(속성) 과 메소드(동작)로 구성된 자바 객체로 모델링 가능
- 객체의 상호작용 : 객체들은 서로 간에 기능(동작)을 이용하고 데이터를 주고 받음
- 객체 간의 관계
- 객체는 다른 객체와 관계를 맺음
1) 집합 관계: 완성품과 부품의 관계
2) 사용 관계: 객체가 다른 객체를 사용하는 관계
3) 상속 관계: 종류 객체와 구체적인 사물 객체 관계
- 객체의 캡슐화 : 자바 언어는 캡슐화된 멤버를 노출시킬 것인지 숨길 것인지 결정하기 위해 접근 제한자(Access Modifier) 사용
- 상속 : 상위(부모) 객체의 필드와 메소드를 하위(자식) 객체에게 물려주는 행위
- 하위 객체는 상위 객체를 확장해서 추가적인 필드와 메소드를 가질 수 있음
- 상속 대상 : 필드와 메소드
- 상속의효과
- 상위 객체를 재사용해서 하위 객체를 빨리 개발 가능 / - 반복된 코드의 중복을 줄임
- 유지 보수의 편리성 제공 / - 객체의 다형성 구현
- 다형성 : 같은 타입이지만 실행 결과가 다양한 객체를 대입할 수 있는 성질
- 부모 타입에는 모든 자식 객체가 대입
- 인터페이스 타입에는 모든 구현 객체가 대입
2. 객체와 클래스 : 설계도 => 객체
- 클래스에는 객체를 생성하기 위한 필드와 메소드가 정의
- 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스(instance)
- 하나의 클래스로부터 여러 개의 인스턴스를 만들 수 있음
3. 객체 생성과 클래스 변수
1) new 연산자 : 객체 생성 역활
- 클래스()는 생성자를 호출하는 코드
- 생성된 객체는 힙 메모리 영역에 생성
2) new 연산자는 객체를 생성 후, 객체 생성 번지 리턴
3) 클래스 변수 : 힙 영역의 객체를 사용하기 위해 사용
4) 클래스의 용도
- 실행용 : main() 메소드를 가지고 있는 클래스로 실행할 목적으로 만든 클래스
4. 클래스의 구성 멤버
1) 필드
- 필드의 사용 : 필드 값을 읽고, 변경하는 작업을 말한다.
- 필드의 사용위치
(1) 객체 내부: “필드이름” 으로 바로 접근
(2)객체 외부: “변수.필드이름”으로 접근
2) 생성자
(1) new 연산자에 의해 호출되어 객체의 초기화 담당
(2) 모든 클래스는 생성자가 반드시 존재하며 하나 이상 가질 수 있음
(3) 생성자 선언을 생략하면 컴파일러는 다음과 같은 기본 생성자 추가
(4) 필드 초기화 : 초기값 없이 선언된 필드는 객체가 생성될 때 기본값으로 자동 설정
(5) 다양화 이유 : 객체 생성할 때 외부 값으로 객체를 초기화할 필요 / 생성자 다양화
(6) 생성자 오버로딩 : 매개변수의 타입, 개수, 순서가 다른 생성자 여러 개 선언
(7) 다른 생성자 호출 ( this() )
- 생성자 오버로딩되면 생성자 간의 중복된 코드 발생
- 다른 생성자는 초기화 내용을 작성한 생성자를 this(…)로 호출
3) 메소드
(1) 객체의 동작(기능)
(2) 호출해서 실행할 수 있는 중괄호 { } 블록
(3) 메소드 호출하면 중괄호 { } 블록에 있는 모든 코드들이 일괄 실행
(4) 메소드 선언
(5) 메소드 리턴 타입 : 메소드 실행된 후 리턴하는 값의 타입
- 메소드는 리턴값이 있을 수도 있고 없을 수도 있음
(6) 리턴문 : 메소드 실행을 중지하고 리턴값 지정하는 역할 (return 문 뒤에 실행문 올 수 없음)
- 메소드 실행을 강제 종료 시키는 역할
(7) 메소드 호출 : 메소드는 클래스 내∙외부의 호출에 의해 실행
- 클래스 내부 : 메소드 이름으로 호출
- 클래스 외부 : 객체 생성 후, 참조 변수를 이용해 호출
(8) 메소드 오버로딩
- 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것
- 하나의 메소드 이름으로 다양한 매개값 받기 위해 메소드 오버로딩
- 오버로딩의 조건: 매개변수의 타입, 개수, 순서가 달라야 함
(9) 인스턴스 멤버
- 객체 (인스턴스) 마다 가지고 있는 필소드와 메소드 (객체 소속된 멤버라 객체없이 사용 불가)
(10) this
- 객체(인스턴스) 자신의 참조(번지)를 가지고 있는 키워드
- 객체 내부에서 인스턴스 멤버임을 명확히 하기 위해 this. 사용
- 매개변수와 필드명이 동일할 때 인스턴스 필드임을 명확히 하기 위해 사용
(11) 정적멤버와 static
- 클래스에 고정된 필드와 메소드 - 정적 필드, 정적 메소드
- 정적멤버는 클래스에 소속된 멤버
-> 객체 내부에 존재하지 않고, 메소드 영역에 존재
-> 정적 멤버는 객체를 생성하지 않고 클래스로 바로 접근해 사용
- 필드 또는 메소드 선언할 때 static 키워드 붙임
- 정적 멤버 사용 : 클래스 이름과 함께 도트(.) 연산자로 접근
인스턴스 멤버 선언 | 정적 멤버 선언의 기준 | |
필드 | 객체 마다 가지고 있어야 할 데이터 | 공용적인 데이터 |
메소드 | 인스턴스 필드로 작업해야 할 메소드 | 인스턴스 필드로 작업하지 않는 메소드 |
'2. Back Developer' 카테고리의 다른 글
[JAVA 자바] 7. 인터페이스(interface) (0) | 2021.10.24 |
---|---|
[JAVA 자바] 6. 상속(Inheritance) (0) | 2021.10.24 |
[JAVA 자바] 4. 참조TYPE (배열) (0) | 2021.10.24 |
[JAVA 자바] 3. 조건문 / 반복문 (0) | 2021.10.24 |
[JAVA 자바] 2. 연산자 (0) | 2021.10.20 |