본문으로 바로가기

객체 지향 프로그래밍

category 언어/JAVA 2019. 9. 10. 23:48
◎ 객체 지향 프로그래밍
    ▶ 객체란?
        객체 : 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것
        객체 모델링 : 현실 세계의 객체를 소프트웨어 객체로 설계하는 것
                              소프트웨어 객체의 필드와 메소드로 정의하는 과정
    ▶ 객체 지향 프로그래밍의 특징
        캡슐화
            - 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것
            - 필드와 메소드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하는데 있다.
            - 접근 제한자는 객체의 필드와 메소드의 사용 범위를 제한함으로써 외부로부터 보호한다.
        상속
            - 부모가 가지고 있는 재산을 자식에게 물려주는 것
            - 상위 객체는 자기가 가지고 있는 필드와 메소드를 하위 객체에게 물려주어 하위 객체가 사용할 수 있도록 해준다.
            - 상위 객체를 재사용해서 하위 객체를 쉽고 빨리 설계할 수 있도록 도와주고, 이미 잘 개발된 객체를 재사용해서 새로운 객체를
              만들기 때문에 반복된 코드의 중복을 줄여준다.
        다형성
            - 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질
            - 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해준다.
    ※ 오버로딩와 오버라이딩
        오버로딩 : 같은 클래스 내에서 같은 이름의 매소드를 사용하는 것(매개 변수 타입, 개수가 다름)
        오버라이딩 : 상속을 받은 하위객체가 상위객체의 메소드를 새롭게 정의하고 그대로 덮어쓰고 사용하는 것(매개 변수 타입, 개수 일치)
    
◎ 객체와 클래스
    클래스 : 자바에서는 설계도
   인스턴스화 : 클래스로부터 객체를 만드는 과정

◎ 클래스 선언
번호
작성규칙
1
하나 이상의 문자로 이루어져야 한다.
Car, SportsCar
2
첫번째 글자는 숫자가 올 수 없다.
Car, 3Car
3
'$', '_' 외의 특수 문자는 사용할 수 없다.
$Car, _Car, @Car(x), #Car(x)
4
자바 키워드는 사용할 수 없다.
int(x), for(x)
 
▶ 클래스의 구성 멤버
    필드
        - 객체의 고유 데이터, 부품 객체, 상태 정보를 저장하는 곳
        - 생성자와 메소드 내에서만 사용되고 생성자와 메소드가 실행 종료되면 자동 소멸된다.
        - 필드는 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재한다.
    생성자
        - 객체 생성 시 초기화를 담당한다.
        - 필드를 초기화하거나, 메소드를 호출해서 객체를 사용할 준비를 한다.
        - 클래스 이름으로 되어 있고 리턴 타입이 없다.
    메소드
        - 메소드를 호출하게 되면 중괄호 블록에 있는 모든 코드들이 일괄적으로 실행된다.
        - 메소드는 객체 간의 데이터 전달의 수단으로 사용된다.

▶ 인스턴스 멤버와 this
    인스턴스 멤버 : 객체를 생성한 후 사용할 수 있는 필드와 메소드를 말함
    인스턴스 필드와 메소드는 객체에 소속된 멤버이기 때문에 객체없이는 사용할 수 없다.

▶ 정적멤버와 static
    정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드
    클래스멤버라고도 한다.

▶ 정적 메소드와 블록 선언 시 주의할 점
    - 객체가 없어도 실행된다는 특징 때문에, 이들 내부에 인스턴스 필드나 인스턴스 메소드를 사용할 수 없다.
    - 객체 자신의 참조인 this 키워드도 사용이 불가능하다.



'언어 > JAVA' 카테고리의 다른 글

클래스 상속  (0) 2019.09.19
디자인 패턴이란??  (0) 2019.09.16
용어 정리1  (0) 2019.09.09
자바 시작하기  (0) 2019.09.09
개발환경 셋팅  (0) 2019.09.09