Binary World

JAVA CLASS : 클래스 본문

개발자의 길/JAVA

JAVA CLASS : 클래스

모쿠 2016. 12. 29. 11:31

* 클래스


- 정의 : 만들고자 하는 대상의 상태(속성) 정보들을 멤버 변수로 선언하고, 대상이 가져가야할 기능들을 메소드로 정의하는 새로 만드는 데이터 타입

- 상태(속성, 성질) : 멤버 변수(field, property)

- 기능 : 메소드

- 생성자(constructor) : 멤버 변수들을 초기화, 멤버 변수들의 공간을 확보, 매개변수는 있을 수 있고, 없을 수도 있음. 

주의) 생성자를 만들지 않으면, 자동으로 기본 생성자를 만들어줌. 하지만 생성자를 하나라도 정의한 경우에는, 자동으로 기본 생성자를 만들지 않음.


<Java Practice>


1. TV의 기능들을 클래스를 이용하여 생성


* ClassMain01.java (메소드를 호출하여 출력하는 메인 class)


import java.util.Scanner;


public class ClassMain01 {


public static void main(String[] args) {

// 클래스의 "객체"를 "생성"한다.

// 클래스이름 변수이름 = new 생성자();

BasicTv tv = new BasicTv();

// 기본 생성자를 호출해서 객체를 생성하게 되면

// 클래스의 멤버 변수들은 기본값으로 초기화됨

//   숫자(int, double, ...) 타입의 기본값: 0

//   boolean 타입의 기본값 : false

//   그 외 타입값 : null

tv.displayInfo();

// TV의 기능 사용

// => BasicTv 클래스가 가지고 있는 메소드를 호출

// 참조변수이름.메소드이름(매개변수);

tv.turnOnOff();

tv.displayInfo();

tv.turnOnOff();

tv.channelUp(); // tv 채널 + 1

tv.volumeUp(); // tv 볼륨 + 1

tv.turnOnOff(); // tv 전원 끔

} // end main()


} // end class ClassMain01



*BasicTV.java(티비 변수와 기능을 선언한 클래스)


public class BasicTv {

// TV가 가져야 할 상태(속성, 성질) => 멤버 변수(필드, 프로퍼티)

boolean powerOn; // TV의 전원상태(true:on, false:off)

int channel; // TV 채널 정보

int volume;  // TV 볼륨 정보

// TV가 가져야 할 기능 => 메소드

// TV를 켜거나 끄는 기능

public void turnOnOff(){

if (powerOn){

powerOn = false;

System.out.println("TV가 꺼졌습니다..");

}

else{

powerOn = true;

System.out.println("TV가 켜졌습니다..");

}

} // end turnOnOff()

// 채널 증가 기능

public void channelUp() {

channel++;

System.out.println("channel up: " + channel);

} // end channelUp()

// 채널 감소 기능

public void channelDown() {

channel--;

System.out.println("channel down: " +  channel);

} // end channelDown

// 볼륨 증가 기능

public void volumeUp() {

volume++;

System.out.println("volume up: " + volume);

} // end volumeUP 

// 볼륨 감소 기능

public void volumeDown(){

volume--;

System.out.println("volume down: " + volume);

} // end volumeDown

public void displayInfo() {

System.out.println("---- TV 현재 상태 ----");

System.out.println("전원: " + powerOn);

System.out.println("채널: " + channel);

System.out.println("볼륨: " + volume);

} // end displayInfo()


} // end class BasicTv


* 출력화면

---- TV 현재 상태 ----

전원: false

채널: 0

볼륨: 0

TV가 켜졌습니다..

---- TV 현재 상태 ----

전원: true

채널: 0

볼륨: 0

TV가 꺼졌습니다..

channel up: 1

volume up: 1

TV가 켜졌습니다.. 



2. 사각형의 가로세로 및 면적을 출력하는 클래스를 생성


* ClassMain02.java(메소드를 호출하는 메인 클래스)


public class ClassMain02 {


public static void main(String[] args) {

// 기본 생성자를 사용해서 MyRectangle 클래스의 인스턴스를 생성

MyRectangle rect1 = new MyRectangle(); // 자동으로 멤버변수가 초기화됨

System.out.println("가로: " + rect1.width); 

System.out.println("세로: " + rect1.height);

rect1.width = 3.0; 

rect1.height = 4.0;

System.out.println("면적: " + rect1.calcArea());

System.out.println("===================");

// 매개변수가 있는 생성자를 호출해서 인스턴스 생성

MyRectangle rect2 = new MyRectangle(10.0, 2.0);

System.out.println("가로: " + rect2.width);

System.out.println("세로: " + rect2.height);

System.out.println("면적: " + rect2.calcArea());

 

} // end main()


} // end class ClassMain02 



* MyRectangle.java(사각형에 대한 변수 및 메소드, 생성자를 생성)


public class MyRectangle {

// 멤버 변수

double width; // 직사각형의 가로

double height; // 직사각형의 세로

// 생성자

public MyRectangle() {} // 기본 생성자

public MyRectangle(double w, double h) {

width = w;

height = h;

} // 리턴이 없음

// 메소드

public double calcArea() {

return width * height;

}

} // end class MyRectangle


* 출력화면

가로: 0.0

세로: 0.0

면적: 12.0

===================

가로: 10.0

세로: 2.0

면적: 20.0 


Comments