JAVA 기본

5주차 과제: 클래스 #5

홍박스 2021. 2. 22. 06:01
728x90

목표

자바의 Class에 대해 학습하세요.

학습할 것 (필수)

  • 클래스 정의하는 방법
  • 객체 만드는 방법 (new 키워드 이해하기)
  • 메소드 정의하는 방법
  • 생성자 정의하는 방법
  • this 키워드 이해하기

 

 

메소드

ㄴ다른말로 하면 함수

유지보수가 쉽게 만들기 위해서 사용된다.

정의 부분과 호출부분으로 나뉨

 

메소드가 없다면 -> 코드 재활용성이 낮아짐 -> 코드량 증가 -> 유지보수가 어려워짐

 

입력과 출력 

어떤 값을 입력했을때 출력값이 달라진다면 재활용 측면에서 유리해진다.

 

매개변수와 인자

함수에 입력값을 주면 입력 값에 따라서 출려값이 다름

ㄴ 정의 함수를 정의 할때 이름 옆에 매개변수를 만듬

ㄴ 사용 출력할때 인자값을 줌

+ 인자를 2개 이상 받을 수도 있음

 

메소드 출력

메소드의 값을 메인으로 돌려줌(return)

왜 돌려주는가?

해당 함수를 출력으로 사용할 수도 있지만 메일로 사용하거나 다른용도로도 사용 하고 싶어서

예)numbering(3,5)만 사용하면 출력만하는것

하지만 값으로 돌려줄 경우

그 값만 가지고 할 수 있는것이 무궁무진하다

 

 

메소드 오버로딩(메소드 중복 정의)

1. 함수의 이름은 같지만 구분하여 호출할 수 있는기능

2. 동일한 기능의 메소드에 자료형만 다르게 할 경우 유효

조건:

1. 전달받은 인자값(매계변수)으로 구분

갯수 순서 자료형으로 구분

이름이 아니라 자료형으로 구분한다.

이름이 아니라? 뭐로? 자료형~

 

 

  • 클래스 정의하는 방법

함수들이 점점 많아지면 받아야할 인자값 혹은 변수가 많아진다 그러면 유지보수가 점점 어려워진다.

그래서 데이터와 메소드를 한곳에 모으는 작업이 클래스이다.

 

cal c1 = new cal()

c1.setOper(10, 20)

c1.sum()

c1.put()

 

클래스는 설계도이다. 객체는 변수+함수이다. 이 모든것은 하나의 프로그램이다.

인스턴스는 제품이다. 클래스를 정의하고 그 설계도로 만들어진 제품이다.

 

클래스 소유 변수

1. 3.14같은 변할필요가 없거나

2. 인스턴스를 생성할 필요가 없는 값을 클래스에 저장하고 싶은경우(base)

3. 값의 변경 사항을 모든 인스턴스가 공유해야하는 경우
+final=변하지 않는 상수

 

인스턴스 변수

인스턴스가 만들어지면서 생성되는 변수

 

  • 객체 만드는 방법 (new 키워드 이해하기)

설계도 만들기 ->인스턴스 만들기 -> 이름.으로 사용하기

cal c1 = new cal()

cal이란 이름의 제품을 만든다.new cal()

그 제품을 c1 이라는 변수에 넣는다.

 

 

  • this 키워드 이해하기

클래스가 인스터스화 되었을때 의 인스턴스를 가리키는 것

 

지역변수와 전역변수

지역변수는 해당 함수 혹은 괄호 안에서만 살아있는 변수

전역변수는 모든 곳에서 사용가능한 변수= static을 사용하여 만든다.

 

this 인스턴스 생성 했을때 인스턴스 자기 자신을 말하며

전역에 있는 변수와 지역의 변수의 이름이 같을때 지역변수가 우선순위가 높아서 전역변수를 나타내기 위해 사용한다,

 

  • 생성자 정의하는 방법

초기화와 생성자

함수를 사용할때 특정값을 꼭 넣어야지만 사용할 수있는 경우가 있다.

하지만 그 함수를 처음 보았을때 알지 못하는 경우가 생길 수 있다.

그래서 생성자를 만들어 강제적으로 특정값을 넣어야하는 상황을 만드는 것이다.

클래스와 같은 이름의 함수를 생성한다는 의미의 -> 생성자

시작과 동시에 한번 실행된다.

 

인스터스란 클래스를 복제하는것

FileWriter f1 = new FileWriter("data.txt")

f1.write("hello")

f1이라는 것에 담기는 복제본을 만들겠다.

그리고 그 복제본을 data.txt에 넣겠다

728x90

'JAVA 기본' 카테고리의 다른 글

7주차 과제: 패키지 #7  (0) 2021.02.23
6주차 과제: 상속 #6  (0) 2021.02.23
4주차 과제: 제어문  (0) 2021.02.02
3주차 과제: 연산자  (0) 2021.02.02
JAVA학습 2주차 (2021.01.21)  (0) 2021.01.22