반응형
Storage Class(저장 기억 부류)
지역 변수 : 메소드 내부에 선언된 변수(메소드 내에서만 사용 가능)
ex) for문의 int i
전역 변수 : 메소드 외부에, 클래스 내부에 선언된 변수 (static 메소드 외 모든 메소드에서 접근 가능)
정적 변수 : static이 붙은 변수 ( 다른 클래스에서도e Class(저장 기억 부류)
지역변수 | 전역변수 | 정적변수 | |
초기화 | 직접 | 자동 | 자동 |
생명주기(사용범위) | 해당{}내에서만 | 프로그램 종료시 | 프로그램 종료시 |
보안성 | 상 | 중 | 하 |
클래스(Class)
자바에서 클래스(class)란 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용된다.
설계도인 클래스를 가지고 여러 변수들과 메소드들을 관리 및 사용하기 위해 쓴다.
1. 주어이다.
모든 문장 맨 앞에 클래스가 나오고 영어는 맨 앞을 항상 대문자로 적는다.
따라서 클래스는 주어이고, 대문자로 시작한다.
Monkey.eat("banana");
[주어] [동사] [목적어]
2. 타입이다.
클래스는 추상적인 개념이고 이 클래스 안에는 필드가 존재한다.
추상적인 것을 바로 사용할 수 없기 때문에 그 필드들을 구체화시킨 대상이 필요하다.
이러한 것들을 객체라고 부르고 영어로는 instance variable이라고 부른다. (ex 붕어빵)
instance는 예, 예시라는 뜻이고 추상적인 개념의 한 예시로써 객체가 나오기 때문에
instance variable이라 부른다.
(ex :자동차인데 예를 들어 내차 말이야)
[클래스] [객체]
추상적인 개념인 클래스를 구체화시킨 대상을 만드는 작업을 객체화라고 하며, instane화라고 한다.
클래스명 객체명;
따라서 클래스는 그 객체의 타입이다.
클래스(Class) 선언
다른 클래스 외부에 선언한다.
class 클래스명{
필드(변수, 메소드)
}
클래스(Class) 사용
클래스는 추상적인 틀이기 때문에 먼저 객체화를 진행한다.
클래스명 객체명 = new 클래스명();
// (new >> heap에 공간할당)
객체화를 진행한 객체명을 통해 아래와 같은 방법으로 사용한다.
객체명.변수;
객체명.메소드();
하나의 저장공간에는 단 한개의 값만 담을 수 있다.
필드에는 여러개의 값이 존재하기 때문에 필드는 다른곳(Heap)에 할당되고
할당된 필드의 주소값을 저장하는것이 객체 이다.
위에서 배운 내용을 토대로 TV를 설계 해보자 (@^0^@)/
TV | |
속성 | - 브랜드 - 전원상태 - 채널 |
기능 | - 전원 ON/OFF - 채널 UP/DOWN |
public class Test {
public static void main(String[] args) {
TV tv = new TV();
tv.channel = 7;
tv.channelUp();
System.out.println("현재 채널 : " + tv.channel);
System.out.println("현재 상태 : " + tv.power);
tv.powerOn();
System.out.println("현재 상태 : " + tv.power);
}
}
class TV{
// TV의 속성(멤버변수)
String brand;
String power = "Off";
int channel;
// TV의 기능(메소드)
void powerOn() {
power = "On";
}
void powerOff() {
power = "Off";
}
void channelUp() {
++channel;
}
void channelDown() {
--channel;
}
}
현재 채널 : 8
현재 상태 : Off
현재 상태 : On
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
19 클래스 배열 (0) | 2021.04.08 |
---|---|
18 생성자 (0) | 2021.04.07 |
16 메소드를 이용한 문제 풀이 (0) | 2021.04.06 |
15 메소드(method) (0) | 2021.04.06 |
댓글