JAVA 메서드와 this
메서드(Method)
- 클래스가 가지고 있는 함수
- 본명 : member function
public static void main(String[] args)
접근제한자
[static]
리턴타입
메서드명
(매개변수들)
1) 접근제한자
이 메서드를 누가 실행할 수 있는가?(권한)
제일 넓은 권한은 public(누구나)
2) static
객체 생성을 하지 않아도 사용할 수 있다.
왜 객체 생성을 안해도 되는가?
=> 객체마다 다를 게 없거든
=> 그래서 공통 영역에 만들어 지거든
3) 리턴타입
메서드는 값을 받기만 하는가? No
일을 다 하고 결과를 전송해야할 때
ex) int add(int a, int b)
a와 b를 더해서 돌려주는 함수
void : 돌려주는 거 없다
int, float, double, String
String[], int[], Person, Person[]
4) 메서드명
변수명 만드는 규칙과 동일, 일반적으로 동사+목적어(명사)
printScreen, getMember, getAllVariables
5) 매개변수
메서드의 입력값(parameter, value, argument)
입력값의 개수가 정해져 있을 때(String a)
입력값의 개수가 정해져 있지 않을 때(String[] args)
메서드 오버로딩(Overloading)
같은 이름의 메서드로 다양한 입력값을 처리
printVar(int a)
printVar(String a)
printVar(double[] a)
- Java는 이런 식으로 같은 이름의 여러 메서드를
만들 수 있습니다 => 사용자의 편의성을 위함
cf) C언어
printVar1(int a)
printVar2(String a)
printVar3(double[] a)
- 사용자가 변수에 따라 다른 함수명을
모두 알고 있어야 사용 가능
- 메서드 오버라이딩(Overriding)과 비교됨
this와 초기화 블럭
(1) this
- 객체 본인을 일컫는 말
- 예) 표에 커서를 올릴 때마다 그 줄은 빨간색
event(this){
this.backgroundcolor = RED;
}
(2) 초기화 블럭
2가지의 타입이 있음
static { }
{ }
☆ Code
import util.MyUtil;
public class ClassTest {
public static void main(String[] args) {
// TODO Auto-generated method stub\
MyUtil.p(MyUtil.NEGATIVE + MyUtil.MAGENTA + "클래스 테스트" + MyUtil.END);
Car car1 = new Car();
MyUtil.p(car1.toString());
Car car2 = new Car("Black", "MyTrip", "Luxury");
MyUtil.p(car2.toString());
}
}
class Car {
String color;
String name;
String type;
Car(){
color = "미정";
name = "비밀";
type = "완전기본형";
MyUtil.p("Car() Called");
}
Car(String color, String name, String type){
this.color = color;
this.name = name;
this.type = type;
MyUtil.p("Car(...) Called");
}
public String toString() {
return "제 색상은 " + color + ", 이름은 " + name + ", 타입은 " + type;
}
// Code Block
// 생성자(Constructor)가 여러 개가 있는데, 공통적으로 할 일이 있을 경우
static {
MyUtil.p("static { } Called");
}
{
MyUtil.p("{ } Called");
}
}