22일차 - 2023.1.26

문우림·2023년 1월 26일
0

Java

목록 보기
8/23

1. static 복습

public static void main(String[] args) {
A.b.print(); }
consloe : 출력

class A {
	static B b = new B(); //B도 데이터 타입
}
class B {
	void print() {
		System.out.println("출력");
	}
}
public class classMehtod {

	public static void main(String[] args) {
		A.b.print();
	}

}
  • static B b = new B(); ➡ 따로 먼저 객체 생성해서 클래스명으로 접근 가능

1-2. main함수 적절한 위치

package example1;

class B {
	void print() {
		System.out.println("클래스 B입니다.");
	}
}

class A {

	void print() {
		System.out.println("A클래스 입니다.");
	}
}

public class ABTest {
	public static void main(String[] args) {
		A a = new A();
		a.print();
		B b = new B();
		b.print();
	}
}
  • main함수는 전용 main함수용 클래스를 만들어 주는 것이 좋다. ex) class.ABTest

⚠main가진 클래스명 = 파일 이름 !그래야 실행 가능

2. 함수(메소드) 오버로딩

✔호출된 메소드를 찾을 때 참조하게 되는 두 가지 정보

  • 함수 이름
  • 함수의 파라미터(매개 변수) 정보

기본으로는 같은 클래스에 동일한 이름의 함수는 2개이상 올 수 없지만, 함수 오버로딩은 함수의 파라미터 자료형 or 개수를 다르게 설정하여 같은 이름 함수를 사용 가능하게 만든다.

2-1. 예제

class A{
	//함수 오버로딩:같은 함수이름으로 파라미터 개수 또는 타입을 달리 하는 것
	void print() {
		System.out.println("A클래스 입니다.");
	}
	
	void print(int num) {
		System.out.println("A클래스 입니다." + num);
	}
	void print(int num, int num1) {
		System.out.println("A클래스 입니다." + num);
	}
	void print(double num) {
		System.out.println("A클래스 입니다." + num);
	}
  • 함수 오버로딩이 안닌 예(반환형)
int print(double num) {
		System.out.println("A클래스 입니다" + num);
		return 0;
        
  • println : 오버로딩 대표적인 예
public static void main(String[] args) {
		System.out.println("A클래스 입니다"); // 문자열
		System.out.println('A'); // char
		System.out.println(10); // int
		System.out.println(3.14); //double
		System.out.println(true); //boolean
	}

함수 오버로딩 사용해 100, A, Hello 출력 하시오.

class OverLoadEx {
	public void print(int input) {
		System.out.println(input);
	}

	public void print(char ch) {
		System.out.println(ch);
	}

	public void print(String arg) {
		System.out.println(arg);
	}
}

public class OverLoad {

	public static void main(String[] args) {
		OverLoadEx ex = new OverLoadEx();
		ex.print(100);
		ex.print('A');
		ex.print("Hello");
	}

}

3. 생성자 오버로딩

생성자도 함수.
생성자의 오버로딩을 통해 생성되는 인스턴스의 유형을 구분할 수 있다.

ex) 여권이 있는 사람 / 없는 사람
ex) 운전 면허증이 있는 사람 / 없는 사람

3-1. 생성자 오버로딩 예제

생성자 오버로딩을 이용해 여권이 있는 사람과 없는 사람을 구분

class Person {
	private int regiNum; //주민등록 번호
	private int passNum; //여권 번호

	Person(int rnum, int pnum) {
		regiNum = rnum;
		passNum = pnum;
	}

	Person(int rnum) {
		regiNum = rnum;
		passNum = 0;
	}

	void showPersonalInfo() {
		System.out.println("주민등록 번호: " + regiNum + " " + "여권 번호: " + passNum);
	}
}

public class PersonTest {

	public static void main(String[] args) {
		// 여권 있는 사람의 정보를 담은 인스턴스 생성
		Person jung = new Person(335577, 112233);
		// 여권 없는 사람의 정보를 담은 인스턴스 생성
		Person hong = new Person(775544);

		jung.showPersonalInfo();
		hong.showPersonalInfo();

	}
    /*
	 * 주민등록 번호 와 여권 번호 둘다 없는 사람도 구분해달라 
	 * = person(){ regiNum = 0; passNum = 0; }
	 * 디폴트 생성자를 만들어서 구분
	 */

}

4. Quiz

Question 1 : 생성자는 클래스를 통해 객체를 생성하고 객체의 필드 값을 초기화 할 수 있다?

⭕ 클래스를 통해 할 수 있다.

Question 2 : 생성자는 메소드이기 때문에 반환 타입을 적어야 한다?

❌ 생성자는 값을 반환하지 않는다.

Question 3 : 클래스에 생성자가 없는 경우에는 객체를 생성할 수 없다?

❌ static을 이용하면 된다.

0개의 댓글