A. 가변인자 (variable argument)
- 가변인자가 없던 시절에는 vector나 배열을 사용하여 전달하였다.
- 가변인자는 자바의 특징인 매개변수의 다형성을 좀더 편리하게 사용할수 있도록 만들어졌다. (JDK 1.5부터)
1) 가변인자 사용법
void sum(String ... str){
for(String a:str){
sytem.out.println(a);
}
}
//위처럼 매개변수에 ...을 이용하여 여러 매개변수를 받을수 있다.
//가변인자를 사용할 경우 자체적으로 배열을 생성해서 매개변수들을 받아올수 있다.
*가능하면 가변인자를 사용한 메소드는 오버로딩을 하지 않는것이 좋다!!
- 가변인자를 사용할 경우 어떤 메소드를 사용해야하는지 구분하기가 어렵기 때문이다.
- 대표적으로 우리가 익히 사용하고 있는 가변인자를 사용하는 메소드는 printf()가 있다!
B. static 과 인스턴스 메소드
1) static 메소드
- 객체를 생성하지 않아도 클래스 이름으로 바로 호출 가능한 메소드이다.
static void printInfo(String name){}
2) 인스턴스 메소드
- 반드시 객체를 생성한 후에 메소드를 호출 할 수 있다.
void printInfo(String name){}
* 두 메소드의 차이점은 static이 앞에 붙었느냐 안붙었느냐의 차이이다.
* 그리고 static메소드 안에서는 인스턴스 변수와 메소드 또한 사용이 불가능하다 .
why? static이 인스턴스 보다 초기화 시점이 빠르기 때문이다.
* 만약, 꼭 사용을 해야한다면 객체를 생성한 후에 참조가 가능하다.
C. super와 super()
1) super는 부모객체를 가리키는 레퍼런스 변수이다.
class Parent{
Stirng a = "부모 클래스";
}
class Child extends Parent{
void show(){
system.out.println(a); //오버라이딩을 하지 않을경우 부모 클래스의 a를 사용한다.
system.out.println(super.a); // 만약 오버라이딩을 했을 경우에도 부모클래스의 a를 사용한다.
}
}
2) super()는 부모 클래스의 생성자를 호출하는 역할을 한다.
class Parent{
Parent(){
String a = "안녕";
}
}
class Childe extends Parent(){
super();
system.out.println(a); //이 경우 super()메소드를 이용하여 부모클래스의 생성자를 호출하였기
//때문에 "안녕" 이 호출될 것이다.
}
D. final 예약어
- 마지막, 변수/메소드/클래스 앞에 올 수 있다.
1) 변수 앞 final - 프로그램 실행 중 변수값 변경 불가능
final int a = 1;
a = 2; // 이 코드는 오류가 난다, final 변수의 경우 값을 임의로 값을 변경할수 없다!
2) 메소드 앞 final - 해당 메소드 오버라이딩 불가능
class Parent{
final void runMethod{}
}
class Child extends Parent{
void runMethod{}//이 메소드는 final메소드이기 떄문에 오버라이딩을 하지 못한다!
}
3) 클래스 앞 final - 해당 클래스 상속 불가능
final class Parent{
}
class Child extends Parent{ //final 클래스이기 때문에 parent클래스를 상속받을수 없다
}
반응형
'Java > Java language' 카테고리의 다른 글
[JAVA]9. 컬렉션 구조 -1 (List ) + Stack (0) | 2021.08.14 |
---|---|
[JAVA]8. 컬렉션 구조 (0) | 2021.08.14 |
[JAVA]6. 배열? (0) | 2021.08.13 |
[JAVA]5. 삼항 연산자 / break와 continue의 차이 (0) | 2021.08.13 |
[JAVA]4. 자바 JDK와 식별자 (0) | 2021.08.13 |
댓글