Date

2021-03-09

객체(Object), 클래스(Class), 추상클래스(abstract class)에 대한 정리

7장 객체와 클래스

객체(Object)란?

객체에 정의입니다. 순차적으로 읽어보면 됩니다.


클래스(Class)란?

    접근제한 class 클래스이름 {
      		멤버변수;
      		생성자();
       		멤버메서드();
     }
클래스 이름 : 대문자로 시작(식별자)

맴버 변수 설정

멤버변수는 초기값을 설정하지 않으면 JVM이객체 생성 시점에 해당 데이터타입(자료형)에 맞게 알아서 해당 자료형의 default 값을 할당을 해 준다.

    int num;       // 멤버변수 - 전역변수  / 기본값 ==> 0
    String str;    // 멤버변수  / 기본값 ==> "" == null

    void Ex() {  // 멤버메서드
    	int num = 10;  // 지역변수
    }

클래스 선언 방법

클래스를 객체로 만드는 과정이 필요함.

1단계 : 클래스 선언

    클래스이름 참조변수;

    Ex01_Class ex;
참조변수 : heap 메모리 공간에 객체가 만들어지는데 만들어지는 객체의 주소값을 가진다.

2단계 : 클래스를 메모리(heap)에 생성

    참조변수 = new 클래스이름();  ==> 클래스이름(X), 생성자(O)

    ex = new Ex01_Class();

    // 1단계 + 2단계 : 클래스 선언 및 클래스 객체 생성
    Ex01_Class ex = new Ex01_Class();
마지막 코드 처럼 1단계와 2단계를 한꺼번에 선언할 수 있다.

3단계 : 참조변수를 이용하여 객체에 접근. 객체에 접근 시 .(도트) 연산자를 이용하여 접근.

    ex.exam();


클래스와 객체 요약



생성자(Constructor)?

    [접근 제한] 생성자이름(매개변수) {
       	생성자 호출  실행될 문장;
    }
생성자의 사용 목적 : 멤버변수들의 초기화를 목적으로 사용한다.

생성자 특징

생성자의 역할


생성자 다중정의 (Constructor Overloading)



클래스에 사용되는 용어들.

JVM이 main() 메서드를 호출하게 된다. 미리 메모리에 로딩이 되어 있지 않다면 인스턴스 객체를 생성하고 난 후 main() 메서드를 호출해야 한다. 이 방식은 불편하기 때문에 기본적으로 main() 메서드를 자동으로 호출하기 위해서 static 키워드를 붙여준 것이다.

Main 함수에 static이 붙는 이유



캡슐화(Encapsulation)란?

추상 클래스(abstract class)란?

  // { } 가 없다.
  void exam();
      [접근 제한] abstract class 클래스명 { }
응용프로그램에서 설계와 구현 부분을 분리해서 작업 시 사용된다.

추상 클래스 error 발생 해결방법

마무리

getter, setter는 JSP 게시판을 만들 때 많이 썻었는데 이렇게 다시보니 리마인드도 되고 확실히 좋은 것 같다.

다음 수업에서는 상속, 오버라이딩, 인터페이스를 알아보도록한다.

  1. 사람은 전자계산기의 기능을 이용하게 되고, 전자계산기는 계산 결과를 사람에게 알려 주는 상호작용을 하게 된다. 

  2. 사람은 이름, 나이 등의 속성이 있고 걷다, 쓰다, 뛴다 등의 동작이 있으며, 자동차의 경우에는 색상, 모델명 등이 속성에 해당이 되고, 달린다, 멈춘다 등의 동작이 있다. 

  3. 자동차는 엔진, 타이어, 핸들 등으로 구성되므로 이 부품들을 집합관계로 볼 수 있다. 

  4. 제품설계도(클래스) ==> 제품(객체) 

  5. 만약 기본생성자를 만들지 않으면 상속에서 문제가 발생한다 => 상속에서 추후 설명 예정 

  6. 시스템이 며칠, 몇 주, 몇 달 정도 가동이 되면 점점 느려지는 현상이 발생을 한다. 

  7. 추상메서드 재정의 강제성.