it공부/Java

클래스 변수 메서드

콩쨈 2020. 7. 5. 21:53
반응형

객체지향언어란? 클래스 변수 메서드 

package e_OOP;

 

public class OOP_Basic {

public static void main(String[] args) {

/*

OOP : Object-Oriented-Programming(객체지향프로그래밍)

 

1. 객체지향언어

- 기존의 프로그래밍 언어에 몇가지 규칙을 추가한 보다 발전된 형태이다.

- 규칙을 이용해서 코드간에 서로 관계를 맺어 줌으로써 보다 유지적인 프로그래밍이 가능하다.

- 객체지향언어의 특징

: 코드의 재사용성이 높다.

: 코드의 관리가 용이하다.

: 신뢰성이 높은 프로그래밍이 가능하다.

 

2. 클래스와 객체

- 클래스란?

: 객체를 정의해 놓은 것이다.

: 객체의 설계도 또는 틀이다.

 

클래스 객체

Tv설계도 Tv

붕어빵틀 붕어빵

 

- 클래스의 선언

[접근제어자] [지정예약어] class 클래스명 [extends 클래스명] [implements 인터페이스명]{}

 

- 객체란?

: 실제로 존재하는 것, 사물 또는 개념

 

- 객체의 구성요소

: 속성(멤버변수, 특성, 필드, 상태)

=> 크기, 길이, 무게, 높이, 색상...

: 기능(메서드, function, 행위, 함수)

=> 켜기, 끄기, 볼륨올리기...

 

3. 인스턴스란?

- 클래스에서 인스턴스를 만드는 과정을 클래스의 인스턴스화 라고 한다.

- Tv클래스로부터 만들어진 객체를 Tv클래스의 인스턴스라고 한다.

- 인스턴스를 생성하는 방법

Tv t = new Tv();

클래스명 변수명; => 클래스의 객체를 참조하기 위한 참조변수를 선언

변수명 = new 클래스명(); => 클래스의 객체를 생성후 객체의 주소를 참조변수에 저장.

 

- 인스턴스 친구들은 참조변수를 통해서만 다룰수 있으며

참조변수의 타입은 인스턴스의 타입과 일치해야 한다.

 

4. 선언위치에 따른 변수의 종료

- 지역변수, 전역변수(클래스 변수, 인스턴스변수)

 

- 클래스변수

: 모든 인스턴스가 공통된 저장공간(변수)를 공유하게 된다.

: 한 클래스의 모든 인스턴스들이 공통적으로 값을 유지해야 하는 경우 클래스변수로 선언한다.

: 인스턴스변수 앞에 static을 붙이기만 하면 된다.

 

- 인스턴스변수

: 클래스의 영역에 선언되며, 클래스의 인스턴스를 생성될때 생성된다.

: 인스턴스변수의 값을 읽어 오거나 수정하기 위해서는 인스턴스화를 먼저 진행해야 한다.

: 인스턴스는 독립적인 저장공간을 가지므로 서로다른 값을 가질수 있다.

: 인스턴스마다 고유한 상태를 유지해야하는 속성의 경우 인스턴스 변수로 만든다.

 

- 지역변수

: 메서드내에 선언되며 메서드내에서만 사용가능하다.

: 메서드 종료시 삭제된다.

 

5. 메서드

- 어떠한 작업을 수행하기 위한 명령문의 집합.

- 주로 어떤 값을 입력받아서 처리하고 그 결과를 돌려준다.

- 입력받는 값이 없을수도 결과를 반환하지 않을수도 있다.

- 반복적으로 사용되는 코드를 줄이기 위해 => 코드양도 줄고 유지보수가 쉽다.

- 작성방법

반환타입 메서드명(변수타입 변수명,변수타입 변수명....){

수행될 코드

return 반환값;

}

 

6. return문

- 메서드가 정상적으로 종료되는 경우

: 메서드의 블럭{}내의 마지막 문장까지 수행하였을때

: 메서드의 블럭{}내에서 return문을 만났을때

- 반환값

: 없는 경우에는

return; //생략도 가능하다.

: 있는 경우에는

return 반환값;

 

7. 매개변수

- 메서드를 호출할때 매개변수로 지정한 값을 메서드의 매개변수에 복사해서 넘겨준다.

- 기본형 매개변수

: 단순히 저장된 값만을 복사한다.

: 변수의 값을 읽기만 할 수 있다.

- 참조형 매개변수

: 인스턴스의 주소를 복사한다.

: 변수의 값을 읽고 변경할 수 있다.

 

8. 메서드의 종류

- 클래스메서드

: 객체생성없이 '클래스명.메스드명()'으로 호출한다.

: 인스턴스 친구와 관련없는 작업을 수행한다.

: 메서드 내에서 인스턴스 친구들을 호출할 수 없다.

: 메서드 내에서 인스턴스변수를 사용하지 않는다면 클래스 메서드로 만들면 된다.

- 인스턴스메서드

: 인스턴스를 생성 후, '참조변수명.메서드명()'으로 호출한다.

: 인스턴스 변수나 인스턴스 메서드와 관련된 작업을 수행한다.

 

9. 클래스 멤버와 인스턴스 멤버간의 참조와 호출

- 클래스 멤버에서는 인스턴스 멤버를 호출할수 없다.

- 인스턴스 멤버에서는 클래스 멤버를 호출할수 있다.

 

- 같은 클래스의 멤버간에는 객체생성이나 참조변수 없이 참조할수 있다.

 

10. 재귀호출(Recursive call)

- 메서드 내부에서 메서드 자기자신을 다시 호출하는 것.

 

11. 메서드 오버로딩

- 한 클래스 내에 같은 이름의 메서드를 여러개 정의하는 것.

- 조건

: 메서드명이 동일해야 한다.

: 매개변수의 개수 또는 타입이 달라야한다.

: 리턴타입은 상관이 없다.

- 오버로딩의 장점

: 메서드를 이름만으로 구분한다면 한 클래스 내의 모든 메서드의 명칭이 달라야 한다.

: 근본적으로 같은 기능을 하는 것인데 다른이름으로 표현되면 기억하기가 어렵다.

: 메서드의 이름을 짓는데 고민을 덜수 있다.

 

12. 생성자

- 인스턴스가 생성될때 호출되는 인스턴스 초기화 메서드이다.

- 특징

: 메서드처럼 클래스 내에 선언된다.

: 리턴값이 없다.

( 생성자도 메서드 이기때문에 리턴되는 값이 없는 void를 적어야 하지만

모든 생성자가 리턴값이 없기 때문에 생략한다.)

- 정의방법

: 기본생성자

클래스명(){

 

}

: 매개변수가 있는 생성자

클래스명(변수타입 변수명,...){

 

}

 

13. 변수의 초기화

- 변수를 선언하고 처음으로 값을 이력하는 것을 '변수의 초기화'라고 한다.

- 초기화 방법

: 명시적 초기화

int a = 10;

: 생성자를 이용한 초기화

: 초기화 블럭을 이용한 초기화

*/

}

}

package e_OOP;

 

class Data{

int x

}

 

public class InterVari {

public static void main(String[] args) {

//1. Data의 객체를 만들어주세요 d1

Data d1 = new Data();

//2. d1의 x값을 10으로 변경해주세요

d1.x = 10;

//3. 아래와같이 출력해주세요

// main()기본형 : d1의 x값

System.out.println("main()기본형 : "+d1.x);

//4. change()를 호출해주세요

// 단. 인자값으로 d1이 x값을 주세요

change(d1.x);

//5. 아래와 같이 출력해주세요

// after기본형 : d1의 x값

System.out.println("after기본형 : "+d1.x);

//6. Data의 객체를 만들어주세요 d2

Data d2 = new Data();

//7. d2의 x값을 10으로 변경해주세요

d2.x=10;

//8. 아래와같이 출력해주세요

// main()기본형 : d2의 x값

System.out.println("main()참조형 : "+d2.x);

//9. change()를 호출해주세요

// 단. 인자값으로 d2을 주세요

change(d2);

//10. 아래와 같이 출력해주세요

// after참조형 : d2의 x값

System.out.println("after참조형 : "+d2.x);

 

InterVari iv = new InterVari();

iv.method1();

}

 

static void change(int x){ //기본형 매개변수

x = 1000;

System.out.println("change기본형 : "+x);

}

 

static void change(Data d1){//참조형 매개변수

d1.x = 1000;

System.out.println("change참조형 : "+d1.x);

}

 

void method1(){

method2();

}

 

void method2(){

}

}

 

반응형

'it공부 > Java' 카테고리의 다른 글

자바의정석 예제 자동차 Car Test  (0) 2020.07.05
JAVA 주사위 두개 던지기 게임 코드  (0) 2020.07.05
JVM 그리기 Tv Test 티비  (0) 2020.07.05
상속 extends 부모 자식  (0) 2020.07.05
제네릭(Generic) 문법 정리  (0) 2020.07.05