반응형
객체지향언어란? 클래스 변수 메서드
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 |