본문 바로가기
Java/JAVA 문법

자바 기초 배우기 12,13일차 [ Class, 상속, 생성자 ]

by lchit 2020. 1. 4.

1.Class

2. 생성자

3. 상속

1.Class

정의: 객체를 만들 수 있는 틀

객체: 독립적으로 존재할 수 있는 것

ex) 붕어빵

클래스 객체

붕어빵 틀 붕어빵

클래스를 토대로 객체를 만들 수 있다

코드를 통해 알아보자

클래스 생성

클래스를 만들었다

매일 만들던 프로젝트-패키지- 속에 있는 클래스 그 클래스도

지금 알아보는 클래스(무언갈 만들 때 쓰는 틀)라는 것이다.

day 13_2 클래스 밖에 새로운

Animal ClassClass를 만들고

String name;name;이라고 문자열의

객체 변수라는 것을 만들었다.

이 객체 변수란 무엇이고 객체는 어떻게 만들고

쓰는 것인지 알아보자

Animal 클래스로 pig라는 객체를 만들었다

여기서 Animal pig = new Animal(); 라는것은

pig라는

알려주는 관계적인 표현이다.

즉 동물이라는 틀로! 돼지라는 독립적으로 존재할 수 있는 것을 만든 것이다

그럼 객체로 객체 변수name을 출력해보자

결과로 null이 출력되었다

null은 없는, 비어있는 정도로 해석하면

되겠다 name 이란 객체 변수는

아직 값을 가지고 있지 않다.

값을 넣어보자

pig객체의 객체 변수에 꿀꿀이라는 값을 주고

출력하자 결과가 꿀꿀이로 출력된다.

클래스에 있는 메서드를 활용하여 값을 넣어보자

Animal class 에는 inputName이라는 문자열 형태의

매개변수(name)를

이 메서드의 실행 작업으로는 this.name=name;이 있는데

여기서 주의해서 봐야 할 것 thisthis.이다 메서드 안에서

객체 변수에 대하여 메서드 호출 시 받는 인자 값으로

대입해주고 싶은 것이다

그래서 this를 사용한다는 건 this.뒤에 오는 건 객체 변수입니다

라는 것이고 그 결과 main 호출부에서

inputName 함수 호출 시 넣은 인자 값 "똥돼지"가

Animal Class에 객체 변수name으로서 출력되는 결과를 보여준다

그럼 다른 객체 생성 시에도

"똥돼지"가 이름이 되나요??

한번 만들어보겠다.

결과는 'null' 없다

이 처럼 객체 변수는 공유되지 않는다.

그럼 객체 변수를 공유시키고 싶을 때는??

돼지든 고양이든 모든 객체를 하나의

이름으로 부르고 싶어

잠시 다른 명령문은 주석 처리하였다

이 처럼 객체 변수를 선언할 때 앞에 고정된~ 이란

뜻이 있는을 붙여주면

그 객체 변수는 "동물들""동물들"로 고정되는 것이다.

2. 생성자(Constructor)

생성자: 메서드명이 클래스명과 동일하며 리턴 타입(자료형)이 없는 메서드

생성자 이해를 위해 간단한 예를 들어보겠다.

만들긴 만들었는데 오류가 난다

이는 잠시 나중에 해결하고

아래 myName이라고 만든 클래스 안에

'생성자' 메서드를 만들었다 보는 바와 같이

클래스와 메서드명이 동일하며 리턴 타입이

정해져 있지 않다.

오류가 나는 이유는 메서드를 만들 때 '매게 변수'를

받는다고 만들고 호출부에서 인자 값을 주지 않았기

때문이다.

그럼 입력해보자

자 이처럼 생성자란

'클래스 틀'로 만들어진 '객체'가 '생성될 때'

'생성자'라는 그 클래스와' 같은 이름의 메서드'가 있으면

'바로 값을 만들어 내는 것'을 말한다.

이어서 디폴트 생성자라는 것이 있다.

다음 예시를 보자

디폴트 생성자는 위의 매게 변수를 받는 생성자와 달리

매게 변수가 없고 실행 작업으로는 " 디폴트 생성자 출력"

을 출력한다

test2의 객체가 선언되며 디폴트 생성 자위 명령이 실행된다

3. 상속

상속:물려받음

클래스를 상속받는다?

어떠한 클래스를 만들었는데

그 클래스에서 무언갈더 추가하고 싶거나

그 클래스를 토대로 무언갈 만들고 싶을 때

상속 선언을 하면 그 클래스의 기능들을

그대로 물려받아 사용할 수 있다.

여기 보면

먹고 싸고 자는 인간이 있다.

기본적인 생리지만 먹고 싸고 자기만 하는 건 조금...

이런 공통된 인간이라는 클래스를 상속받아

기능을 추가해 좀 더 발전을 시켜보자

Employee 클래스 생성 후 extends Human 즉

Human 클래스를 상속받아 일하는 소리를 담는 메서드를

새로 추가했다.

Human 클래스를 상속받았기에

Human 클래스가 가지고 있던 먹고, 싸고, 자는 소리를 담는

메서드는 별도록 추가하지 않아도 사용할 수 있는 것을 볼 수 있다.

이 처럼 공통된 기능들을 담은 클래스를 가져와 일부분만 수정하는

(추가 등등) 이 가능한 상속 클래스다.

학원에서 배우고 있는 입장이라

설명이나 명령들이 틀린 부분이 있을 것이다

발견하신다면 댓글로 알려주세요!