[계산] class A1 { void print() { System.out.println("스태틱을 이해하자"); } } class B1 { static A1 b = new A1(); } public class Test27 { public static void main(String[] args) { B1.b.print(); } }
[결과값] 스태틱을 이해하자
main의 위치는 아무 곳이나 상관은 없지만, 가장 좋은 방법은 따로 class를 생성하는 것이다.
[계산] class A1 { void print() { System.out.println("A 클래스 입니다."); } } class B1 { void print() { System.out.println("클래스 B입니다."); } } class ABTest { public static void main(String[] args) { A1 a = new A1(); // Class A1과 A1이 절대 같은 것이라 생각하지 말 것 a.print(); B1 b = new B1(); b.print(); } }
[결과값] A 클래스 입니다. 클래스 B입니다.
함수 오버로딩 : 같은 함수 이름으로 매개변수(파라미터)의 개수 또는 타입을 달리 하는 것.
호출된 메소드를 찾을 때 참조하게 되는 두 가지 정보
- 메소드의 이름
- 메소드의 매개변수 정보
[계산] class OverLoadEx { public void print(int input) { System.out.println(input); } public void print(char input) { System.out.println(input); } public void print(String input) { System.out.println(input); } } public class Test27 { public static void main(String[] args) { OverLoadEx ex = new OverLoadEx(); ex.print(100); ex.print('A'); ex.print("Hello"); } }
[결과값] 100 A Hello
[계산] class Person { private int regiNum; // 주민등록 번호 private int passNum; // 여권 번호 Person(int reginum, int passNum) { // 주민등록 번호 및 여권 번호 생성자 this.regiNum = reginum; this.passNum = passNum; } Person(int regiNum) { // 주민등록 번호 생성자 this.regiNum = regiNum; this.passNum = 0; } Person() { // 디폴트 생성자 주민등록 번호 및 여권 번호 없는 사람 생성자 this.regiNum = 0; this.passNum = 0; } void showPersonalInfo() { System.out.println("주민 번호 : " + regiNum + ", 여권 번호 : " + passNum); } } public class Test27 { public static void main(String[] args) { Person jung = new Person(999999, 111111); // 여권 있는 사람의 정보를 담은 인스턴스 생성 Person hong = new Person(775544); // 여권 없는 사람의 정보를 담은 인스턴스 생성 Person a = new Person(); // 주민 번호 및 여권 번호 없는 사람의 정보를 담은 인스턴스 생성 jung.showPersonalInfo(); hong.showPersonalInfo(); a.showPersonalInfo(); } }
[결과값] 주민 번호 : 999999, 여권 번호 : 111111 주민 번호 : 775544, 여권 번호 : 0 주민 번호 : 0, 여권 번호 : 0