클래스란?
class Sample1
{
...
}
class라는 키워드가 붙은 블록으로 둘러싸인 부분을 클래스라고 부른다.
즉, 지금까지 사용한 코드는 하나의 클래스로 사용되었다.
지금까지 만들어 온 클래스에서 사용할 수 있는 새 클래스를 만들어 보겠다.
클래스의 원리
ex) 자동차 = 사물이라고 가정
자동차 데이터
●차량번호(데이터)
●남은 연료 양(데이터)
-----> 나중에 배우겠지만 변수로 선언되는 부분이다.
"차량번호는 ○○이다." "남은 연료의 양은 ○○이다 "
○○부분을 데이터의 상태 및 특성이라고 말할수 있다.
자동차 기능 = 메소드
▶ 차량 번호 결정하기
▶ 자동차에 연료를 넣기
▶ 차량 번호와 남은 연료의 양을 표시
클래스는 사물의 상태 및 특성, 그에 관련된 기능을 정리하여 프로그램으로 표현한 것이다.
class 자동차
{
차량 번호
연료량
차량 번호를 결정하기
연료를 넣기
차량 번호와 남은 연료의 양을 표시하기
}
클래스 선언하기
class 클래스 명
{
형(type)명 필드(field)명;
. . .
리턴 값의 반환형(type) 메소드(method) 명(인수)
{
문장;
. . . return식(expression);
}
}
클래스의 ' 상태 및 속성' = 필드(field) , 필드는 코드 상에서 변수로 나타낸다.
클래스 '기능'을 표현하기 위한 수단을 메소드(method)라고 부릅니다. 필드와 메소드 모두 클래스의 멤버라고 부른다.
ex) 차(Car)라는 클래스 선언
class Car
{
int num;
double gas;
}
class car
{
int num;
double gas;
---> 이부분을 필드라고 부른다.
}
객체 생성하기
선언한 클래스를 이용하려면 객체(인스턴스를) 생성한다.
class Car
번호 -- 데이터
가솔린양 -- 데이터
번호를 결정 -- 메소드 함수
휘발유를 넣는다 ---메소드 함수
번호와 가솔린 양을 표시 한다.---- 메소드 함수
필드는 데이터와 메소드로 구성된다.
객체1 객체2
자동차 1번호는 1234 자동차 2 번호는 4567
자동차 1가솔린양은 20.5 자동차 2 가솔린 양은 30.5
... ...
객체 생성 코드
1. 객체를 담을 변수 선언하기 Car(클래스) car1(변수); Car형 변수 car1을 선언
car1(변수) = new Car(); 객체를 생성해서 변수 car1에 대입. car1은 Car클래스의 객체를 가리킨다.
2. 객체를 만들고, 그 변수에 접근하기
객체 만드는 구문
(1)클래스명 변수명;
변수명 = new 클래스 명();
Car car1 = car1 new Car();
(2) 하나의 문장으로 선언
클래스명 변수명 = new 클래스명();
Car car1 = new Car();
멤버 접근하기
자동차 1대에 대한 차량 번호 및 연료 양의 실제 값 적용하기
생성된 객체 는 num, gas값을 저장할 수 있는 필드(변수)를 가진다.
car1.num --- 차량번호
car1.gas --- 연료의 양
즉 car1.num이라고 하면 car1이 가리키는 자동차 객체 번호를 가리키게 되는 셈이다
public static void main(string [] args)
{
car1.num = 1234; ---> 멤버에 접근하여 값을 저장
car1.gas = 20.5
}
멤버 접근 순서
1. 클래스 선언 2. 객체 생성 3. 멤버 데이터 저장
지금까지 작업 정리
sample1 java
class Car
{
int num;
double gas;
}
public class Sample1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Car car1 = new Car();
car1.num = 1234;
car1.gas = 20.5;
System.out.println("차량번호는"+ car1.num +"입니다.");
System.out.println("연료 양은"+ car1.gas+"입니다.");
}
}
실행결과
차량번호는1234입니다.
연료 양은20.5입니다.
2개 이상의 객체 생성
Car car1 = new Car();
car1.num = 1234;
car1.gas = 20.5;
Car car2 = new Car();
car1.num = 1234;
car1.gas = 20.5;
만약에 클래스가 2개를 만들게 되면 .java를 컴파일 했을때 2개의 클래스 파일이 만들어진다.
메소드
이전의 '자동차' 클래스를 만들때 자동차의 다양한 기능을 메소드라는 불리는 기능으로 설명 할 수 있다.
class 차
{
차량 번호;
연료 양; 상태 및 성질은 필드로 표현
차량 번호를 결정하기
연료를 넣기 기능은 메소드로 표현. 클래스 선언부에 작성
차량 번호와 연료의 양을 조사하기
}
필드와 메소드 모두 클래스의 멤버(member)라고 부른다. 실제 메소드는 다음과 같은 스타일로 클래스 선언부에 작성.
블록 안에 '사물의 기능'을 표현합니다.
메소드 정의
리턴 값의 반환형(type) 메소드(method) 명(인수)
{
문장;
. . . return식(expression);
}
class Car
{
...
void show() : 반환형(void) 메소드이름은 show(인자값 없음)
{
System.out.println("차량 번호는 "+ num +"입니다.");
System.out.println("연료 양은 " + gas + "입니다.");
}
...
}
메소드 호출하기
구문
객체를 가리키는 변수 이름 메소드 이름 (인수 목록);
ex) show()메소드 호출하는 코드
Car car1 = car1 new Car();
.. .
car1.show(); ---- 메소드 호출
Sample2. java 메소드 호출하기
class Car
{
int num;
double gas;
void show() --- > 클래스 선업부에 메소드를 작성
{
System.out.println("차량 번호는" + num + "입니다.");
System.out.println("연료 양은" + num + "입니다.");
}
}
class Sample2
public static void main(string[] args)
{
Car car1;
car1 = new Car();
car1.num = 1234;
car1.gas = 20.5;
car1.show(); 메서드 호출 c
car1.show();
}
실행결과
차량 번호는1234입니다.
연료 양은1234입니다.
차량 번호는1234입니다.
연료 양은1234입니다.
필드에 접근하는 방법(this)
// 자동차 클래스
class Car
{
int num; ---- 필드
double gas;
void show()
{
System.out.println("차량번호는" + this.num +"입니다."); --> 자기 자신의 필드에는 this를 붙일 수 있습니다.
System.out.println("연료량은"+ this.gas + "입니다.")
}
}
메소드 호출은 메소드가 선언된 클래스 안에서도 가능하다. 다음 예제를 보자
class Car
{
int num;
double gas;
void show()
{
System.out.println("차량번호는"+ num +"입니다.");
System.out.println("연료의양은"+ gas +"입니다.");
}
void showcar()
{
System.out.println("지금부터 자동차의 정보를 표시합니다.")
show(); --- 자기 자신의 메소드라는 뜻 // 메소드를 클래스 안에서 호출 할 경우 this.show();를 붙여서 호출 가능
}
}
public class Sample3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Car car1 = new Car();
car1.num = 1234;
car1.gas = 20.5;
car1.showCar();---> car1의 필드라는 뜻
}
}
실행결과
지금부터 자동차의 정보를 표시합니다.
차량 번호는1234입니다.
연료 양은1234입니다.
참고 http://elren.blog.me/220011176920
getter & setter
public class User {
String userName;
void setUserName(String userName) {
this.userName = userName;
자기자신의 인스턴스변수 = 매개변수
}
String getUserName()
{
return userName;
}
}
'프로그래밍 > java' 카테고리의 다른 글
클래스의 기능(접근제한자 public, private.protected), 오버로딩, 생성자, Static, Final (495) | 2017.08.28 |
---|---|
클래스(메소드 인수, 리턴 값) (488) | 2017.08.27 |
배열 (494) | 2017.08.25 |
반복문(for,while,do ~ while문, 중첩문, break, continue) (512) | 2017.08.24 |
조건문(if, else ~if, switch문) (491) | 2017.08.23 |