728x90
DAY4. 키워드
- 객체
- 클래스
- 생성자
- 메소드
- 인스턴스 멤버와 this
- 접근제한자
- static
docs.oracle.com/javase/8/docs/api/
Java Platform SE 8
docs.oracle.com
1-1. 객체
- 특성으로 묘사되고 행위로 이뤄지는 것
- 물리적으로 존재하는 것 (자동차, 책, 사람)
- 추상적인 것(회사, 날짜) 중에서 자신의 속성과 동작을 가지는 것
1-2. 객체간의 관계
- 객체 지향 프로그램에서 객체는 다른 객체와 관계를 맺음
- 집합 관계 : 완성품과 부품의 관계
- 사용 관계 : 객체가 다른 객체를 사용하는 관계
- 상속 관계 : 종류 객체와 구체적인 사물 객체 관계
1-3. 객체 지향 프로그래밍의 특징
- 캡슐화
- 객체의 필드, 메소드를 하나로 묶고 실제 구현 내용을 감추는 것
- 외부 객체는 객체 내부 구조를 알 수 없음
- 잘못된 수정으로 객체가 손상되지 않도록 사용
- 상속
- 상위 객체의 필드와 메소드를 하위 객체가 물려 받는 것
- 반복된 코드의 중복을 줄일 수 있음
- 다형성
- 같은 타입이지만 실행 결과가 다른 것
2-1. Class
- object(class를 이용해서 만든 독립된 개체)를 만드는 틀
- template, 설계도
- 붕어빵 틀
- 객체를 생성하기 위한 필드와 메소드가 정의
- 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스(object 실체)
클래스 변수;
변수 = new 클래스();
2-2. 클래스의 이름
하나 이상의 문자로 이루어져야 한다. | Car, SportsCar |
첫 번째 글자는 숫자가 올 수 없다 | 3Car (X) |
'$', '_'외의 특수문자는 사용할 수 없다 | @Car (X), #Car(X) |
자바 키워드는 사용할 수 없다 | int (X), for (X) |
2-3 클래스의 용도
- 라이브러리(API)
- 자체적으로 실행되지 않음
- 다른 클래스에서 이용할 목적으로 만든 클래스
- 실행용
- main()메소드를 가지고 있는 클래스로 실행할 목적으로 만든 클래스
1개의 애플리케이션 = (1개의 실행클래스) + (n개의 라이브러리 클래스)
2-4 클래스의 구성 멤버
3-1. 생성자 (Constructor)
- 클래스 이름과 동일해야 함
- 생성자 자동생성 : 마우스 우클릭 > Source > Generate Constructor using Fields
- return을 가질 수 없음
- 변수 초기화가 목적
3-2. 생성자 오버로딩
public class Car(){
Car() {....}
Car(String model) {....}
Car(String model, String color} {....}
Car(String color, String model} {....} // 오버로딩이 아님
Car(String model, String color, int maxSpeed) {....}
}
4-1. 메소드
- 객체의 동작(기능)
- 호출해서 실행 할 수 있는 중괄호 { } 블록
4-2. 메소드 오버로딩
- 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것
- 오버로딩의 조건 : 매개변수 타입, 개수, 순서가 달라야 함
5-1. Instance 변수
- 객체마다 가지고 있는 필드와 메소드
- new로 객체 생성 시 마다 생성되는 변수
5-2. this()
- 객체(인스턴스) 자신의 참조(번지)를 가지고 있는 키워드
- 객체 내부에서 인스턴스 멤버임을 명확히 하기 위해 this. 사용
- 매개변수와 필드명이 동일할 때 인스턴스 필드임을 명확히 하기 위해 사용
public class Person {
int age;
String name;
Person(){
this(12, "Anonymous");
}
Person(int age, String name){
this.age = age;
this.name = name;
}
}
6. 접근제한자
- public : 모든 패키지에서 접근 가능
- protected
- default (생략) : 같은 패키지에서만 접근 가능
- private : 같은 class 내에서만 접근 가능 > 정보 은닉
7-1. static
- 클래스에 고정된 필드와 메소드
- 객체 내부에 존재하지 않고 메소드 영역에 존재
- static은 객체를 생성하지 않고 클래스로 바로 접근해서 사용
- static 블록 내부에 인스턴스 필드나 인스턴스 메소드 사용 불가 (static 붙어 있는 것만 사용 가능)
- 객체 자신의 참조인 this 사용 불가
7-2. Instance vs static
Instance | static | |
필드 | 객체 마다 가지고 있어야 할 데이터 | 공용적인 데이터 |
메소드 | 인스턴스 필드로 작업해야 할 메소드 | 인스턴스 필드로 작업하지 않는 메소드 |
728x90
반응형
'공부 > JAVA' 카테고리의 다른 글
[JAVA STUDY] DAY5. Singleton / final / Access Modifier (0) | 2021.02.21 |
---|---|
[JAVA STUDY] DAY3. Memory Reference / 배열 / 확장 for / Call / enum (0) | 2021.02.17 |
[JAVA STUDY] DAY2. 조건문 / Random함수 / 반복문 / Scanner (0) | 2021.02.16 |
[JAVA STUDY] DAY 1. 주석 / 변수 / 데이터타입 / 형변환 / 연산자 (0) | 2021.02.15 |