티스토리 뷰
클래스 / 메소드
- 프로그램의 설계도 같은 의미
- 클래스에는 속성(변수)과 기능(메소드)가 존재한다. ( 하나의 클래스를 정의해놓으면 재사용성이 높아진다는 장점이 있다. )
- 하나의 파일에 하나의 클래스만 존재해야하며, 인스턴스가 되기 위해서는 속성과 기능이 있어야한다.
- 객체(인스턴스 필드) : 클래스를 인스턴스화 시킨 것이다.
- 하나의 클래스는 여러개의 객체가 될 수 있다. (인스턴스 = 객체)
- 객체로 만들어지게 되면 각 인스턴스마다 필드(멤버변수)에 접근할 수 있게 된다.
1
2
3
4
5
6
7
8
9
10
11
12 |
Pet dog = new Pet();
Pet cat = new Pet();
dog.type = "개";
dog.name = "바둑이";
cat.type = "고양이";
cat.name = "나비";
System.out.println("애완 동물의 종류는 " + dog.getType() + "이고, 이름은 " + dog.getName() + "입니다.");
System.out.println("애완 동물의 종류는 " + cat.getType() + "이고, 이름은 " + cat.getName() + "입니다.");
|
cs |
- 클래스 필드 (static)
- 클래스의 인스턴스 필드는 인스턴스가 개별로 가지는 메모리에 데이터를 쓸 수 있는 필드이지만
클래스 필드는 클래스가 가지는 메모리에 데이터를 쓸 수 있는 필드를 의미
- 인스턴스화 시킬 필요가 없다.
- 인스턴스가 아니더라도 외부에서 접근 가능하다.
▼ 클래스 필드 선언, 사용
1
2
3
4
5
6
7 |
/**
* 만들 수 있는 애완동물의 수
*/
public static int petCount = 2;
// 인스턴스를 만들지 않아도 변수를 쓸수 있고, 인스턴스를 만들지 않아도 기능을 쓸 수 있다.
//static은 메모리가 독립되어 있다.
//상수를 만들때 static이라는 키워드가 반드시 들어간다. |
cs |
1
2
3
4
5
6 |
Pet dog = new Pet();
dog.petCount++;
Pet cat = new Pet();
cat.petCount++;
|
cs |
- 생성자 : 인스턴스 생성시 딱 한번만 호출되는 메소드
- 인스턴스의 초기화를 목적으로 정의되는 메소드
- 클래스명과 동일한 메소드를 기본으로 제공한다.
- 인스턴스의 초기화와 멤버변수의 초기화를 동시에 할 수 있다.
메소드 만드는 방법 :
Public void pet() { }
접근제어지시자 리턴타입 함수이름
생성자 만드는 방법 :
Public Pet() { }
여기서 Pet()는 method가 아니라 리턴타입 이다.
1
2
3
4
5
6 |
public static void main(String[] args){
EggMarket market = new EggMarket();
market.start();
} |
cs |
1
2
3
4
5
6 |
public Seller(int money, int dambaeCount, int dambaePrice) { //생성자는 클래스명과 같아야한다.
this.setMoney(money);
this.setDamBaeCount(dambaeCount);
this.setDamBaePrice(dambaePrice);
}
|
|
1 |
Seller DamBaeSell = new Seller (50000, 10, 2000); |
cs |
- 메소드
- 반환값이 있는 메소드
1
2
3
4
5
6
7
8
9 |
public boolean checkInven(Customer customer) { // boolean, int, double... 등으로 만들어진 메소드는 반환값이 존재해야한다.
if (this.dambaeCount == 0 || customer.getMoney() < this.dambaePrice) {
System.out.println("장사 그만");
return false;
}
return true;
} |
cs |
- 반환값이 없는 메소드
1
2
3
4
5
6 |
public void giveRemain( int money, int dambaeCount, Customer customer ) {
int remain = money - ( dambaeCount * this.dambaePrice);
this.money -= remain;
customer.takeMoney(remain);
System.out.println("거스름돈 " + remain + "원 이야");
} |
cs |
- Method Overloading
- 한 클래스에 동일한 이름과 반환타입을 가진 method이다.
- 단, 매개변수의 유형, 개수가 다를 때 각 메소드는 다른 메소드로 인식한다.
- 생성자도 Overloading 될 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 |
/**
* 각 음료의 수량을 얻어온다.
* @param drinkNumber
* @return
*/
public int getDrinkQuantity( int drinkNumber ) {
if ( drinkNumber == 1 ) {
return getDrinkQuantity(this.cola, "콜라"); //오버로딩 됨
}
else if ( drinkNumber == 2 ) {
return getDrinkQuantity(this.sprite, "스프라이트");
}
else if ( drinkNumber == 3 ) {
return getDrinkQuantity(this.fanta, "환타");
}
return 0;
}
private int getDrinkQuantity( String drinks[], String drinkName ) { //오버로딩 사용
int drinkQuantity = 0;
for ( String drink : drinks ) {
if ( drink.equals(drinkName) ) {
drinkQuantity++;
}
}
return drinkQuantity;
} |
cs |
- Data 보호 - 접근 제어 지시자
- public : 어디서든 호출 가능
- Protected : 동일한 패키지 안, 또는 서브 클래스에서 호출 가능
- 생략 : 동일한 패키지 안에서만 호출 가능
- private : 동일한 클래스 안에서만 호출 가능
private로 선언된 인스턴스 필드는 Getter / Setter 로 접근해야 한다.
Getter - 필드 명은 인스턴스 필드의 이름을 의미 , 데이터형명은 인스턴스 필드의 데이터 형을 의미, return은 호출자에게 값을 반환하는 것을 의미
Setter - 필드 명은 인스턴스 필드의 이름을 의미 , 데이터형명은 인스턴스 필드의 데이터 형을 의미, 변수명은 파라미터로 받을 인자의 이름을 의미, void는 아무것도 반환하지 않는 다는 것을 의미
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
public class Customer {
/**
* 구매자가 가지고 있는 금액
*/
private int money;
public void setMoney ( int money ) { // 주고싶은 데이터, 5번라인의 money와 관련이 없는 변수다.
this.money = money; //인스턴스필드의 money에 파라미터로 넘어온 money를 넣는다.
}
//인스턴스필드가 가지고 있는 값을 외부로 가져다 준다. get
public int getMoney () {
return this.money; // 인스턴스 필드의 money를 return한다.
}
|
cs |
'BackEnd > JAVA' 카테고리의 다른 글
[JAVA] 예외처리(InputMismatchException, ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, FileNotFoundException) (0) | 2016.01.29 |
---|---|
[JAVA] 마인드맵 그리기 / 컬렉션 프레임워크 / ArrayList (0) | 2016.01.26 |
[JAVA] while, 배열, package (0) | 2016.01.25 |
[JAVA] if, switch, for / final (0) | 2016.01.21 |
[JAVA] Scanner 함수 (1) | 2016.01.21 |
- Total
- Today
- Yesterday
- 안드로이드 스튜디오
- AlertDialog.Builder
- order by
- java
- boj
- mybatis
- REDIRECT
- 예외처리
- table
- onPostExecute
- algorithm
- INSERT
- 이클립스
- DFS
- onBackPressed
- indexOf
- sort
- Spring
- BFS
- maven
- Baekjoon Online Judege
- list
- restfb
- servlet
- 자바
- controller
- 안드로이드 비콘
- RequestMapping
- jsp
- DP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |