
Java
클레스
클래스란
- 클래스는 객체를 생성하기 위한 설계도다.
- 하나의 클래스로 여러 개의 클래스를 생성할 수 있다.
- 클래스는 구성요소는 필드, 생성자, 메소드다.
클래스의 구성요소
- 필드(Field)
- 객체의 고유 데이터, 현재 상태정보, 부품객체를 저장하는 곳이다.
- 객체의 고유한 속성을 나타낸다.
- 변수와 비슷한 형태로 정의한다.
- 필드는 초기화값을 지정하지 않는 경우 해당 테이터타입의 기본값으로 초기화된다.
- 필드는 생성자와 메소드 전체에서 사용가능하다.
- 객체 소멸되지 않는 한 객체와 함께 유지된다.
- 생성자(Constructor)
- new 연산자로 호출되는 특별한 메소드다.
- 객체 생성시 초기화를 담당한다.
- 반드시 클래스의 이름과 동일한 이름을 가지고, 반환타입이 없다.
- 객체 생성할 때만 호출할 수 있다.
- 메소드(Method)
- 이름을 가진 수행문의 블록이다.
- 객체의 고유한 기능을 담당한다.
- 수행문의 블록은 이름을 가지고 있으며, 이것을 메소드이름이라고 한다.
- 메소드를 호출하면 블록내의 모든 수행문이 수행된다.
- 메소드는 필드의 값을 조회하고, 수정할 수 있다.
- 메소드는 고유한 기능(업무로직) 수행에 필요한 수행문을 포함하고 있다.
- 메소드는 객체들끼리 메세지를 주고받는 용도로 사용된다.
- 메소드는 호출하는 측으로부터 데이터를 전달받을 수 있고, 실행 후 결과값을 호출하는 측에게 제공할 수 있다.
- 메소드의 구성은 선언부와 구현부로 구성되어 있다
- 메소드 선언부
- 반환타입(Return Type)
- 메소드 수행결과(출력)인 반환값 대한 데이터타입을 적는다.
- 반환값이 없는 경우 반환타입은 void를 적는다.
- 메소드는 오직 한 종류의 값만 반환할 수 있다.
- 메소드의 반환타입이 void가 아닌 경우, 구현부안에는 return 반환값구문이 반드시 포함되어 있어야 한다.
- return 문은 구현부(구현부 내의 수행문을 실행한)실행한 결과로 획득된 값을 호출한 측에게 반환값으로 전달하는 수행문이다.
- return 문이 반환하는 반환값의 타입은 메소드 선언부의 반환타입과 일치해야 한다.
- 메소드이름
- 수행문을 포함하고 있는 코드블록의 이름이다.
- 그 메소드가 수행하는 작업을 잘 나타내는 이름으로 적는다.
- 메소드명은 보통 동사형이다.
- 매개변수(Parameter)
- 메소드 구현부
- 메소드를 호출했을 때 수행할 수행문을 포함하는 부분이다.
- 수행문이 하나도 없는 구현부도 가능하다.
- 메소드 선언부의 반환타입이 void가 아닌 경우 구현부 안에는 반드시 return 키워드를 사용해서 값을 반환하는 수행문이 존재해야 한다.
메소드
- 메소드는 이름있는 코드 블록이다.
- 메소드는 객체의 구성요소 중 기능을 담당한다.
- 메소드는 선언부와 구현부로 구성된다.
- 메소드의 선언부는 접근제한자 반환타입 메소드이름(타입 매개변수명, 타입 매개변수명, ...) 으로 구성된다.
- 메소드의 구현부는 해당 메소드가 수행하는 작업에 대한 수행문이 포함되어 있다.
메소드의 매개변수(Parameter)
- 매개변수는 메소드가 작업을 수행하는데 필요한 입력값을 저장하기 위한 변수다.
- 매개변수는 0개 이상 정의할 수 있다.
- 매개변수의 타입은 기본자료형(정수, 실수, 불린, 문자)과 참조자료형(문자열, 배열, 객체)이 모두 가능하다.
- 메소드를 호출하는 측에서는 반드시 매개변수에 맞게 인자(Argument)값을 전달해야 한다.
package day2;
public class Tv {
private int channel = 10;
private boolean power;
public void on() {
power = true;
}
public void off() {
power = false;
}
public void channelDown() {
channel--;
}
public void channelUp() {
channel++;
}
public void changeChannel(int channelNumber) {
if (channelNumber >= 1 && channelNumber <= 100) {
channel = channelNumber;
}
}
public int getCurrentChannel() {
return channel;
}
}
package day2;
public class TvApp {
public static void main(String[] args) {
Tv tv1 = new Tv();
Tv tv2 = new Tv();
tv1.on();
int channelNumber = tv1.getCurrentChannel();
System.out.println("현재 채널번호 : " + channelNumber);
tv1.channelUp();
tv1.channelUp();
tv1.changeChannel(24);
channelNumber = tv1.getCurrentChannel();
System.out.println("현재 채널번호 : " + channelNumber);
tv1.changeChannel(-100);
channelNumber = tv1.getCurrentChannel();
System.out.println("현재 채널번호 : " + channelNumber);
tv2.on();
}
}