KOSTA DAY05
Java
객체지향
객체지향이란?
- 프로그래밍 기술의 변천
- 기계어, 어셈블리어 사용 → 일상언어를 닮은 고급프로그래밍 언어 등장
→구조적 프로그래밍 기법 등장 → 객체지향 프로그램밍 기법 등장 - 상호작용하는 객체들로 이루어진 현실세계를 모방
객체
- 상태와 행동으로 구분되어지며, 변수와 메소드로 표현될 수 있다.
- 객체는 클래스라는 설계도에 만들어진다.
- 클래스로 부터 만들어진 객체 = 인스턴스
- 객체를 만드는 과정 = 인스턴스화
클래스
- 클래스의 데이터 구조는 변수로 선언한다.
- 클래스의 기능은 메소드로 구현한다.
- new 연산자를 사용하여 객체를 생성한다.
- 생성된 객체는 heap영역에 생성된다.(완전히 독립된 객체)
- 객체명.~ : 저장된 주소값을 가져온다.
- 클래스는 객체의 모양을 갖춰야한다.
- 클래스는 객체를 무한대로 생성할 수 있다.
객체지향 프로그래밍
특징
- 확장성
- 캡슐화 : 객체의 필드, 메소드를 하나로 묶고 실제 구현내용을 감춘다.(접근 지정자)
- 상속 : 상위객체가 하위객체에 필드와 메소드를 물려준다.
접근지정자
private : 같은 클래스 내에서만 사용
default : 같은 패키지 안에서만 사용
protected : 같은 패키지 안에서만 사용가능하나, 그렇지 않아도 부모자식간에는 사용가능
public : 누구나 사용가능
필드
변수 : 생성자와 메소드 내에서만 사용, 생성자와 메소드 실행 종료 시, 자동 소멸
필드 : 생성자와 메소드 전체에 사용되며, 객체가 소멸되지 않는 한 객체와 함께 존재
생성자
라이브러리 클래스의 객체생성 방법
- 객체가 생성되고 나서 실행해야 할 명령문을 써두는 부분
- 클래스 안에 선언함
- 메소드처럼 파라미터값을 넘겨줄 수 있다.
- 객체를 효율적으로 초기화하는데 사용
- new 연산자와 함께 자동으로 호출
- 객체 생성의 가이드 라인(타인이 만든 생성자 사용 시)
생성자와 메소드의 차이점
- 생성자는 반드시 자신의 클래스 이름과 동일
- 리턴형을 사용하지 않는다.(void 조차 사용 할 수 없다.)
- 메소드는 이름으로 호출, 생성자는 new 연산자와 함께 자동으로 호출
Overloading : 같은 이름의 메소드 또는 생성자를 파라미터값으로 구분
Scanner 사용 시, 오류 해결
- scanner 사용 시, nextInt();를 통해 값을 받으면
그 후, nextLine();에서 자동으론 빈 값이 입력되는것을 확인 - 이유 : 숫자값은 nextInt가 받으나, enter값을 그 다음 nextLine에서 처리함
- 해결 : 스캐너의 nextInt 사용 시, nextLine을 함께 사용