class Sum
{
 int num;
 public Sum() { num = 0;}
 public void addNum(int n) { num += n; }
 public int getNum() { return num; }
}

class AdderThread extends Thread
{
 Sum sumInst;
 int start, end;
 
 public AdderThread(Sum sum, int s, int e)
 {
  sumInst=sum;
  start=s;
  end=e;
 }
 public void run()
 {
  for(int i=start; i<=end; i++)
   sumInst.addNum(i);
 }
}

class ThreadHeapMultiAccess {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
     Sum s = new Sum();
     AdderThread at1 = new AdderThread(s, 1, 50);
     AdderThread at2 = new AdderThread(s, 51, 100);
     at1.start();
     at2.start();
    
     try{
      at1.join();
      at2.join();
     }
     catch(InterruptedException e)
     {
      e.printStackTrace();
     
     }
     System.out.println("1~100까지의 합:"+s.getNum());
 }

}

이 소스 코드에서

클래스AdderThread가

클래스 Sum을 상속 하지도 않았는데

Sum의 있는 메서드를 어떻게 사용 할 수 있는건가요 ?

인스턴스의 참조 값만 알면 가능하다는데

이해가 잘안되네요 ㅡㅜ