메소드 오버라이드 & Static

시바코코개발자·2023년 6월 29일
0
  1. 부모 클래스가 가지고 있는 메소드를 자식 클래스가 다시 만드는 것을 말한다.
  2. 부모클래스가 가지고 있는 메소드와 완전히 동일한 원형으로 다시 만든다.(리턴타입 + 메소드명 + 매개변수=> 모두 동일하다.)
  3. 어노테이션 @Override를 붙이면 개발자의 실수를 줄일 수 있다.
    (동일한 원형이 아니면 에러를 발생시켜주기 때문에 오버라이드가 잘 되었는지 확인이 쉽다.)

//오버로딩: 한 클래스내에 이름은 같고, 매개변수가 다른 메소드가 여러개 존재할 수 있다.
// 오버라이드: 부모 클래스가 가지고 있는 메소드를 자식 클래스가 그대로 똑같이 다시 만드는 것.

1.static의 사전적 의미:정적
2. 정적: 미리 만듦
동적: 나중에 만듦(new를 의미함)
3.static 사용 이유
1) 모든 객체(인스턴스)가 특정 값을 공유하기 위해서
2) 객체(인스턴스)생성(new) 없이 클래스를 사용하기 위해서
4.static 동작
1) static 멤버(필드나 메소드)는 프로그램 실행 직전에 미리 만들어진다.
2) 객체(인스턴스) 생성되기 전에 미리 만들어진다.
3)객체(인스턴스) 생성(new)없이도 만들어진다.
4) 하나의 static멤버(필드나 메소드)가 만들어지면 모든 객체(인스턴스)가 공유한다.
5. static 멤버 접근 방식
1) 필드: 클래스명.필드명
2) 메소드: 클래스명.메소드명()
6.static 메소드는 인스턴스 변수(non-static 필드)를 사용할 수 없다.
class Person{
//Field
static String country = "KOREA" //static필드는 new Person("홍길동")이전
String name; // none-static 필드는 new Person("홍길동") 이후에 값이 존재할 수
// Constructor
Person(String name){
this.name = name;
}
//method
static void printPerson(){ //static메소드는 new Person("홍길동") 이전에도
System.out.println("국가 : " + country);
// non-static 필드인 name은 new Person("홍길동") 이후에만 존재할 수 있으므로 static 메소드에 올 수있다.
System.out.println("성명 : " + name);

    }
}
  1. 어떤 메소드를 static으로 처리할 것인가?
    메소드 내부에서 인스턴스변수(non-static 필드)를 사용하지 않는다면 static을 사용하는 것이 좋다.
    (성능에 도움이 됨)

0개의 댓글