본문 바로가기

Java/자바 기반 웹 개발자 과정 필기

[200309.11일차] Java 11 - 클래스 && 객체 4 + 생성자

반응형

 

toString 메소드

 

 

출력된 결과

 

 

그냥 프린트문이랑 같은 기능이지만 System.~ 에 너무 많은 기능이 있어 프로그램이 무거워진다.

추후 사용되는 프로그램들에는 println문을 잘 사용하지 않는다.

 

 

 

JVM의 기능 중

가비지 컬렉터 GC - 청소부

=> 간단하게 말하면 주소값을 잃은 변수들을 정리해준다.

너무 자주, 혹은 너무 오랜 기간 동안 청소하면 비효율적이다.

그냥 오토매틱으로 사용해도 무관하다.

 

 

 

 

필드의 수식에는 public / private 을 줄 수 있다.

     ( 공개 / 비공개 )

 

pritvate => The field Car.speed is not visible

private이라는 수식어가 붙은 변수는 Car클래스 외부에서 접근이 불가능

 

class안에 생성된 변수들을 멤버변수, 전역변수

멤버변수들 -> 모여있는 곳 필드

 

 

*ptivate 변수 값 우회해서 얻어오기

main

 

 

 

getter // setter 를 사용하는 이유

 

1. 외부에서 남의 데이터가 직접 접근하는 것을 막기위해

 

2. 세분화된 접근제어 가능

ex) getter 만 만들고, setter를 안 만들면? => 읽기전용

ex) setter 만 만들고, getter를 안만들면? => 쓰기전용

ex) 둘다 만들면? => 읽고쓰기 다 가능

ex) 둘다 안 만들면? => 비공개

 

3. 입력값에 대한 검증 가능

 

음수가 저장될 수 있다는걸 확인하고 음수가 저장되는걸 방지

 

 

// getter 만들기

// 수식어는 public

// 반환유형은 내가 getter 되고자 하는 변수의 타입

// 메소드면 get+변수명 (첫글자를 대문자)

// 매개변수는 없음

 

// setter 만들기

// 수식어는 public

// 반환유형은 void

// 메소드면 set+변수명 (첫글자를 대문자)

// 매개변수 : set되고자 하는 변수와 같은 타입의 매개변수 한개

// 몸통 : { 내가 setter하고자 하는 변수 = 매개변수 }

 

 

자동으로 만들기 => Alt + Shift + s

 

 

 

 

생성자

생성자 (contructor) => 메소드이다.

=> 객체가 생성될 때(new) 반드시 한번 수행되는 메소드

 

 

* 오버로딩

정수형 setSpeed가 실행된다.
실수형 setSpeed가 실행된다.

 

이와 같이 함수명(메소드명)은 같은데, 매개변수가 다른것을 메소드 오버로딩이라고 한다.

메소드 오버로딩 : 매개변수가 다른 두개 이상의 함수를 정의하는 것

(오버라이딩이랑은 다르다.)

 

 

 

 

생성자의 특징

 

1. 수식어는 왠만하면 public

*2. 문법적으로 반환유형 자체가 없음

3. 얘도 메소드니까 오버로딩 가능

*4. 생성자 메소드의 이름은 클래스명과 완벽하게 같음

 

*2번과 4번이 반드시 지켜져야먄 컴파일러가 생성자로 인식한다.

 

생성자도 메소드며, 객체가 생성될때 다른 메소드들과 함께 heap영역에 저장이 된다.

 

 

* 기본생성자 : 매개변수가 없는 생성자

 

new를 사용해 만들때 생성

 

생성자는 대체로 초기값을 지정하기 위해 사용한다.

 

 

 

 

 

 

 

 

 

* 기본 생성자는 생성자를 하나도 정의하지 않으면

몸통이 비어있는 기본생성자를 컴파일러가 잠깐 끼어넣음

=> public Car(){}

 

매개변수가 있는 생성자 하나만 만들면
오류가 난다.

* 생성자를 하나도만들지 않으면 컴파일러가 기본생성자를 자동으로 만든다.

* 하지만 매개변수 3개짜리 생성자를 우리가 만들었음 (사용자 정의 생성자)

그러면 컴파일러가 기분생성자를 만들어주는 서비스를 제공하지 않음

 

 

 

* 멤버변수, 멤버함수

클래스를 구성하는 요소로 클래스를 통해 객체를 생성하면

각 객체마다 새로운 인스턴스 변수, 함수들을 생성함

 

 

 

객체안에 인스턴스 되서 만들어진 변수들 => 인스턴스 변수

객체안에서 만들어진 변수 => 멤버변수

인스턴스 변수==멤버변수로 볼 수 있다.

 

 

변수

지역변수 : 메소드 내에서 생성, 메소드 종료될 떄 사라짐

멤버변수 : 클래스 내부에 정의, 객체가 생성될 떄 사용됨

인스턴스 변수 : 객체가 생성될 때 생성, 객체가 죽을 때 죽음

 

매개변수도 stack에 쌓이고, 위치적으로 보면 지역변수이다.

 

 

 

반응형