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