본문 바로가기

JAVA

[JAVA]DAY9_클래스

클래스

: 공통 요소들이 모여 있는 곳

1. 주어이다.
     Monkey.eat("바나나")
     원숭이가 먹는다 바나나를
     [주어]     [동사]    [목적어]
     문장 맨 앞에 클래스가 나오기 때문에
     클래스 앞 글자는 대문자로 작성한다.

2. 타입이다.
     공통된 요소들을 반복해서 선언하는 것은
     비효율적이다. 따라서 클래스내에서 공통요소를
     한 번 선언하고, 해당 클래스를 구체화시킨
     객체로 접근한다. 이 공통요소들을 필드라 하고
     필드에 접근하기 위해서는 객체의 타입이 
     해당 클래스의 타입이여야 한다.

     공통요소들을 묶어놓고 이름을 정할 때에는 추상적인 이름으로
     정해야 하며, 추상적인 개념으로 필드에 접근할 수 없기 때문에
     구체화된 객체를 만들어서  필드에 접근해야 한다.
     예를 들어 도형은 추상적이므로 클래스이고, 세모는 도형 클래스를
     구체화시킨 객체가 된다.

클래스 선언
     class 클래스명{
                        필드(객체, 메소드)
                         }

클래스 사용
     추상적인 개념인 클래스를 구체화시킨 객체로 만드는 작업을
     객체화라고 하며, 영어로 instance이다.
     instance는 예, 예시로 해석할 수 있고 뜻은 '실체화 하다'이다.
     따라서 객체는 추상적인 개념의 한 예시라고 볼 수 있다.

     클래스명 객체명 = new 클래스명()

    도형 네모 = new 도형();
    네모.필드명

    자동차 엄마차 = new 자동차();
    엄마차.필드명

 

기본 생성자
     클래스 선언시 자동으로 생성자가 만들어지고 코드상에는
     보이지 않는다. 만약 사용자가 직접 생성자를 만들면
     만든 생성자가 기본생성자로 변경된다.

생성자
     클래스명 뒤에 소괄호가 있는 것을 생성자라고 하며,
     메소드의 기능과 똑같다. 하지만 리턴이 없기 때문에
     메소드라고 부르지 않고 생성자라고 불러야 한다.

생성자의 역할
1. 클래스의 필드를 메모리에 할당하고 그 필드의 주소값을
    가지고 온다. 따라서 객체화 과정에서 객체에는 
    메모리에 할당된 필드의 주소값이 대입된다.
2. 초기화의 목적

this
하나의 클래스 타입에는 여러 객체가 존재한다.
만약 객체별로 접근할 메소드를 만들면 비효율적이므로
하나의 메소드에서 어떤 객체가 접근했는지를 알 수 있도록
접근한 객체가 가지고 있는 주소값을 알아야 한다.
따라서 자동으로 전달된 주소값을 담아주는 변수가 바로 this이다.

다형성(Polymorphism) {면접에 자주 나옴**}
1. 오버 로딩(Overloading)
    매개변수의 갯수 혹은 타입이 다르면
    같은 이름의 메소드로 선언 가능하다.
2. 오버 라이딩(Overridding)

'JAVA' 카테고리의 다른 글

[JAVA]DAY11_상속  (0) 2020.03.16
[JAVA]DAY10_클래스 배열  (0) 2020.03.16
[WEB]DAY7_메소드  (0) 2020.03.16
[WEB]DAY6_2차원 배열  (0) 2020.02.17
[WEB]DAY5_배열  (0) 2020.02.17