티스토리 뷰

18. this예약어  
    : this예약어는 자신의 오브젝트를 가리키는 예약어
     ①자신의 오브젝트속에 존재하는 멤버변수를 가리킬때 
         <형식> this.멤버변수   <--주로 매개변수이름과 동일할때 구별목적으로 사용
                    this.메소드()
     ②생성자 내부에서 자신의 클래스의 또 다른 생성자를 지칭하는 메소드
         <형식>  this(값);    
          반드시 생성자속의 첫번째 문장으로 1번만 기재할수 있다
        

[참고] 
1. 메서드오버로딩(Overload Function)
   : 하나의 클래스에서 같은 이름의 메서드가 여러번 구현된경우
     (1) 메서드의 이름이 같아야 한다
     (2) 매개변수의 갯수또는 타입이 달라야 한다
     (3) 매개변수는 같고 리턴타입이 다른경우는 오버로딩이 성립되지 않는다
         (리턴타입은 오버로딩을 구현하는데 아무런 영향을주지 못한다)
    
      ex)  void  show(int a,int b){ }와  오버로딩인 메서드는? 2,3,4
           ①int   show(int a,int b){ }
           ②void  show(double a,double b){ }
           ③void  show(int a){ }
           ④int   show(char a){ }

2. 메서드오버라이딩(Override Function)
   : 선조클래스와 후손클래스에 같은 이름의 함수가 존재하는경우
     선조클래스로부터 상속받은 메서드의 내용을 변경하는것을 오버라이딩(재정의)이라고함
     (1) 이름이 같아야한다   
     (1) 매개변수의 갯수와 타입이 같아야한다
     (2) 리턴타입이 같아야한다
         (리턴타입이 다른경우는 overriding이 아님)
                 
      ex)  void  show(int a,int b){ }와  오버라이딩 메서드인 것은? 3
           ①int   show(int a,int b){ }
           ②void  show(double a,double b){ }
           ③void  show(int k,int s){ }
           ④int   show(char a){ }

package overrideex;
//자바에서 생략가능한 것들
/*
 *-import java.lang.String
 *-import java.lang.System;
 */

class Test extends Object{
	public String str = "Hello";
	public Test() {
		super();
	}
	public void view() {
		System.out.println(this.str.toString());
	}
}

public class ObjectEx {
	public static void main(String[] args) {
		Test ob = new Test();
		ob.view();
	}
}

 이걸 아래와 같이 줄일 수 있다

package overrideex;

class Test{
	public String str = "Hello";
	public void view() {
		System.out.println(str);
	}
}
public class ObjectEx {
	public static void main(String[] args) {
		new Test().view();
	}
}

 

 

만약 AA ob = new BB(); / ob.view();에서 1번, 즉 AA에  void view가 없으면 실행X

반대의 경우에는 2번이 실행된다.

 

 

package overrideex;

class Test1{
   public void view1() { System.out.println("view1 method"); }
   public void view3() { System.out.println("view3 method"); }
}
class Test2 extends Test1{
   public void view1() { System.out.println("view11 method"); }
   public void view2() { System.out.println("view22 method"); }   
}
public class OverrideEx {
   public static void main(String[] args) {
      Test1 ob=new Test2();
      ob.view1();          // view11
//      ob.view2();          // error
      ob.view3();          // view3
      
//      Test2 ob=new Test2();
//      ob.view1();          // view11
//      ob.view2();          // view22
//      ob.view3();          // view3
   }
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
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
글 보관함