상세 컨텐츠

본문 제목

자바 this() 와 super()에 대해

관리X 과거글

by 까먹기전에 2015. 9. 16. 22:52

본문

반응형
-------------------------------this()--------------------------
class A{ 
 public static void main(String args[]){
  B o=new B(); // 생성자 B() ㄱㄱ
 }
}

class B{
 B(){ // 1번째
  this(200); // 밑에 B(int a) 부름
  System.out.println(100);
 }

 B(int a){ //나 불렀음? ㅇㅇ 가져가셈
this(5,"dd",2); // 근데 나도 B(int a, String b, int c) 부름
   System.out.println(a);
 }
 B(int a,String b,int c){ // B(int a) 야 나 부름?
 
 System.out.println(100000);
 }
 
 }

결국엔
 100000
 200
 100
출력

----------------------------------------------------------



this() 와 super()의 문법형태는 비슷하다


this()는 자신과 같은 이름의 생성자( 가로안에 매개변수 형태 같은애!) 를 불러오지만

super()는 extends 클래스명 즉, 자기 부모가 갖고있는 생성자호출 해올수있다.

super()는 그외에도 부모객체나 메소드에도 접근할수있다. 엄마는 자식에게 모든걸 베풀어준다

만약 접근제어자가 널널하면(public , protected,default) 이면 super.멤버변수 로 멤버변수를 쓸수있다.

private는 that's no no


class A{
public int num =2;
}

class B extends A{
public int num =5;
public void shownum(){
System.out.println(num);
System.out.println(super.num);
}
}

class C extends B{

public int num =7;
public void showallnum(){
super.shownum();
System.out.println(super.num);
}
}

class geeshowall {
public static void main(String[] args) {
C c = new C();
c.showallnum();
}
}




출력값 5 2 5


관련글 더보기