모든 클래스는 인스턴스화 될때 생성자를 사용한다.
<class_name>([<argument_list>])
{
[<statements>]
}
public class Car{
String name;
int number;
public Car(String n){
name = n;
}
}
public class CarExam2{
public static void main(String args[]){
Car c1 = new Car("소방차");
Car c2 = new Car("구급차");
//Car c3 = new Car(); // 컴파일 오류가 발생합니다.
System.out.println(c1.name);
System.out.println(c2.name);
}
}
this는 현재 객체, 자기 자신을 나타낸다. (객체 자신을 참조하는 키워드)
= 생성자에서 또 다른 생성자를 호출 할때 사용
= 자신의 주소(참조값)을 반환 함
public class Car{
String name;
int number;
public Car(String n){
name = n;
}
}
public Car(String name){
name = name;
}
public Car(String name){
this.name = name;
}
클래스 안에서 자기 자신이 가지고 있는 메소드를 사용할 때도 this.메소드명()으로 호출할 수 있다.
매개변수의 유형과 개수가 다르게 하여 같은 이름의 메소드를 여러 개 가질 수 있게 하는 기술
class MyClass2{
public int plus(int x, int y){
return x+y;
}
public int plus(int x, int y, int z){
return x + y + z;
}
public String plus(String x, String y){
return x + y;
}
}
public int plus(int i, int f){
return i+f;
}
public MethodOverloadExam{
public static void main(String args[]){
MyClass2 m = new MyClass2();
System.out.println(m.plus(5,10));
System.out.println(m.plus(5,10,15));
System.out.println(m.plus("hello" + " world"));
}
}
생성자의 매개변수의 유형과 갯수가 다르게 하여 같은 이름의 생성자를 여러 개 가질 수 있다.
public class Car{
String name;
int number;
public Car(){
}
public Car(String name){
this.name = name;
}
public Car(String name, int number){
this.name = name;
this.number = number;
}
}
public class CarExam4{
public static void main(String args[]){
Car c1 = new Car();
Car c2 = new Car("소방차");
Car c3 = new Car("구급차", 1234);
}
}
public Car(){
this("이름없음", 0);
}
this(인자)는 자신의 생성자를 호출하는 것이다.
자기 자신의 생성자를 호출함으로써 비슷한 코드가 중복돼서 나오는 것을 방지할 수 있다.
패키지(package)란 서로 관련이 있는 클래스 또는 인터페이스들을 묶어 놓은 묶음이다. 패키지를 사용함으로써 클래스들이 필요할 때만 사용될 수 있도록 하고, 클래스를 패키지 이름과 함께 계층적인 형태로 사용함으로써 다른 그룹에 속한 클래스와 발생할 수 있는 클래스 이름간의 충돌을 막아줌으로 클래스의 관리를 편하게 해준다.
만약 import를 하기 싫다면, 혹은 각기 다른 패키지에 존재하는 같은 이름의 클래스 파일을 사용해야 한다면 아래와 같이 이용한다.