본문 바로가기
Java

자바 중급 005. 클래스와 객체 - Tv 클래스, 객체 하나의 파일에서 작성하기 , 객체 생성 및 사용

by Smart Factory in 2020 2021. 8. 11.
728x90
반응형

안녕하세요. 스마트 팩토리입니다. 
자바 중급 005. 클래스와 객체 - Tv 클래스, 객체 하나의 파일에서 작성하기 , 객체 생성 및 사용에 대해 알아보겠습니다. 

1. TV 클래스 및  객체 생성  그리고 사용 

가. 클래스와 객체 생성 과 사용

Tv1 t1=new Tv1();

Tv1 은 클래스 로 t1 객체를 생성할 수 있게 해 준다. 

 

Tv. java 파일을 만들어서 그 안에 클래스와 객체를 만들어 보았습니다. 

Tv.java 파일에서 Tv 파일 명은  public class Tv와 동일해야 합니다. 

 

하단에 class Tv1를 작성하고 이를 같은 파일내에서 객체를 생성하였습니다. 클래스와 객체가 하나의 파일에 있어서 코드를 작성하는데 있어서 길어지고 하니 가독성은 좋지 못합니다. 하지만 이렇게 해도 된다는 것을 이해하는 것이 중요합니다.  파일을 분리하는 경우와 동일하게 객체를 만들면 됩니다. 각자 public class Tv영역과 class Tv1영역이 {  } 으로 분리되어 있다는 것을 알 수 있습니다.  {  } 안과 밖은 명령어를 실행함에 있어서 매우 중요합니다. 코드를 볼때 { } 의 범위가 파악하는 것이 결국 코드를 보는 눈과 같기 때문입니다. 그렇기 때문에 직접 코드를 작성해 보면서 { } 와 ( ) 를 잘못기입했을때 생기는 오류가 얼마나 많이 발생하는지 알게 됩니다. 
 

객체를 생성할때는 다음과 같습니다. 

Tv1 t1=new Tv1();

class Tv1이 만들어진 메모리와 객체 t1의 멤버변수나 멤버 메서드가 생성되는 메모리 공간이 다릅니다.

크게 3가지 공간으로 클래스 영역과 스택 영역, 힙 영역으로 나뉩니다. 흔히 사용하는 변수 (지역변수)는 스택 영역에 생성되고, 객체의 멤버 변수는 힙 영역에 생성됩니다.

new 연산자가 만들어낸 변수의 멤버는 힙 영역에 있다고 보면 됩니다. 

package tclass;

public class Tv {  --->객체 생성 영역 

public static void main(String[] args) {
Tv1 t1=new Tv1();  -> Tv1 클래스를 이용한 t1객체 생성

t1.power();  ---> t1.객체 변수의 초기값은  false 에서 power() 에 의해서 true(전원 on)
t1.channel=20;  -->t1.채널 20으로 저장 
t1.channelUp(); --> t1.채널 1 업되어 21 저장
t1.volume=9;  --> t1볼륨 9 저장.
t1.volumeUp();  --> t1 볼륨 메서드에 의해서 1증가 10이 저장됨
System.out.println(" Tv 전원 은:"+t1.power); --> 파워  true 출력
System.out.println(" 현재 채널 : "+ t1.channel+"현재 볼륨 : "+t1.volume); 현재 채널 21, 볼륨 10이 출력됨
t1.power(); --> t1 객체 파워 메소드에 의해서 false 로 바뀜
System.out.println(" Tv 전원 은:"+t1.power);  -->t1 전원 false출력됨
}
}
class Tv1{  --> Tv1클래스 영역
    String color;      -->Tv1클래스 멤버 변수 
    boolean power;  -->Tv1클래스 멤버 변수 
    int channel;  -->Tv1클래스 멤버 변수 
    int volume;  -->Tv1클래스 멤버 변수 
    
    void power() {   -->Tv1클래스 메소드영역(기능)- 전원
     power=!power;
    }
    void channelUp() { Tv1클래스 메소드영역(기능)-채널 업
     ++channel;
    }
    void channelDown() {Tv1클래스 메소드영역(기능)-- 채널 다운
     --channel;
    }
    void volumeUp() {Tv1클래스 메소드영역(기능)--> 볼륨 업
     ++volume;
    }
    void volumeDown() {Tv1클래스 메소드영역(기능)--> 볼륨 다운
     --volume;
    }

}
728x90
반응형

댓글