본문 바로가기
웹 프로그래밍 기초/자바기반의 웹&앱 응용SW 개발자

자바기반의 웹&앱 응용 SW개발자 양성과정 14일차 -27

by oncerun 2020. 3. 17.
반응형

상속과 오버라이드

기본의 재사용할수 있는 라이브러리를 틀로 사용하게되며 내가 기능을 추가하고 싶다면 메서드를 오버라이드해서 기능을 추가할 수 있습니다.

그럼 상속관계에서 메소드의 우선순위 관계에 대한 의문.

import java.awt.Frame;

public class Program {

   public static void main(String[] args) {
	   
      GameFrame gf = new GameFrame();
      
      gf.setVisible(true);
      //=>Frame.repaint
      //=>Frame.update
      //=>Frame.paint
      gf.setSize(500, 700);

   }

}
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;

public class GameFrame extends Frame {

   private Image imgFighter, img;

   public GameFrame() {
      Toolkit tk = Toolkit.getDefaultToolkit();
      img = tk.getImage("src/images/backgroundImage.jpg");

   }

   @Override
   public void paint(Graphics g) {
      g.drawLine(0, 0, 300, 300);
      int w = 740;
      int h = 500;
   }
}

Frame을 상속받은 GameFrame의 객체는 Frame의 메서드와 속성을 사용할 수 있는데. frame에서 제공해주는 paint메서드에 우리가  Override 한 paint메서드에 우선순위가 밀린다 왜 밀릴까?

메서드가 실행될때 상속받은 자식객체의 메서드가 우선순위로 실행된다.
자바는 참조형식의 함수보다 객체형식의 함수가 먼저 호출되기 때문이고

자료형식은 참조할수있는 함수의 범위를 정해주게된다.

 

 

 

 

반응형

댓글