저장소 : GitHub Repositories leeconomy1121/java-study
메소드 오버로딩(Overloading)
오버라이딩(Overriding) vs 오버로딩(Overloading)
부모클래스로부터 상속받은 메소드를 자식클래스에서 재정의하는 것을 오버라이딩이라고한다. 상속받은 메소드를 그대로 사용할 수도 있지만, 자식 클래스에서 상황에 맞게 변경해야 하는 경우 오버라이딩 할 필요가 생긴다.
오버라이딩의 조건
오버라이딩은 부모클래스의 메소드를 재정의하는 것이므로, 자식 클래스에서는 오버라이딩 하고자 하는 메소드의 이름, 매개변수, 리턴 값이 모두 같아야한다.
@Overrride
오버로딩(Overloading)
자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다.
오버로딩의 조건
메소드의 이름이 같고, 매개변수의 개수나 타입이 다를 때
디폴트 생성자(Default)
생성자가 없을 때 적용, 생성자가 있으면 더 이상 디폴트 생성자는 적용 안됨
this() 생성자
super() 생성자
this란?
현재클래스의 인스턴스를 의미합니다.
즉, 현재 클래스의 멤버 변수를 지정할 때 사용합니다.
this()란?
현재 클래스에 정의된 생성자를 부를 때 사용합니다.
super()란?
자식 클래스에서 상속받은 부모 클랫의 멤버변수를 참조할 때 사용
super()란?
자식 클래스가 자신을 생성할 때 부모 클랫의 생성자를 불러 초기화 할 때 사용됩니다.(기본적으로 자식 클래스의 생성자에 추가됩니다.
HelloWorld 생성
App class
package application;
import javax.swing.SwingUtilities;
import gui.MainFrame;
public class HelloWorld {
public static void main(String[] args) {
// 자바 스윙 프로그램
// JFrame 은 윈도우 창
SwingUtilities.invokeLater(() -> {
new MainFrame("테스트 스윙 앱");
// JFrame mainFrame = new JFrame(); // 새 윈도우 창 생성
//
// mainFrame.setSize(600, 400); // 가로 600, 세로 400
// mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 창을 종료시 프로그램 종료
//
// mainFrame.setVisible(true); // 창을 보이게함
});
}
}
윈도우 창을 닫더라도 프로그램이 실행 중이므로 아래 오른쪽 빨간색 버튼을 눌러 프로그램 종료!
스윙 유틸리티
프로그램의 안정성을 위해 권장하는 코드 :
SwingUtilities.invokeLater(() -> {
코드 입력
});
package timer_example;
import java.util.Timer;
import java.util.TimerTask;
class Task extends TimerTask {
@Override
public void run() {
System.out.println("헬로우");
}
}
public class App {
public static void main(String[] args) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new Task(), 0L, 1000L);
}
}