생성자2 _ch4

이소연's avatar
Aug 05, 2024
생성자2 _ch4

+Q ) this 붙이는 가/안 붙이는 것의 차이

💡
우리가 읽는 가독성의 차이. 코드상 동일한 동작 수행.
 
notion image
notion image
 
클래스의 생성자를 호출할 때, 매개변수를 전달하려면 다음과 같은 방법을 사용할 수 있습니다: 생성자 오버로딩: 클래스 내에 매개변수를 받는 생성자를 추가하여 다양한 매개변수를 전달할 수 있도록 합니다. 인스턴스 생성 후 메서드를 호출하여 매개변수를 설정합니다. 생성자 내에서 사용자로부터 매개변수를 입력받도록 합니다. 아래는 각 방법에 대한 예시입니다: 1. 생성자 오버로딩: java public class MyClass { private int id; private String name; public MyClass() { id = 0; name = "이름 없음"; } public MyClass(int id, String name) { this.id = id; this.name = name; } public static void main(String[] args) { MyClass obj1 = new MyClass(); // 매개변수를 전달하지 않는 생성자 호출 System.out.println(obj1.id); // 출력: 0 System.out.println(obj1.name); // 출력: "이름 없음" MyClass obj2 = new MyClass(1, "뤼튼"); // 매개변수를 전달하는 생성자 호출 System.out.println(obj2.id); // 출력: 1 System.out.println(obj2.name); // 출력: "뤼튼" } } 2. 인스턴스 생성 후 메서드를 호출하여 매개변수 설정: java public class MyClass { private int id; private String name; public MyClass() { id = 0; name = "이름 없음"; } public void setInfo(int id, String name) { this.id = id; this.name = name; } public static void main(String[] args) { MyClass obj = new MyClass(); // 생성자 호출 obj.setInfo(1, "뤼튼"); // 메서드 호출하여 매개변수 설정 System.out.println(obj.id); // 출력: 1 System.out.println(obj.name); // 출력: "뤼튼" } } 3. 생성자 내에서 사용자로부터 매개변수 입력 받기: java import java.util.Scanner; public class MyClass { private int id; private String name; public MyClass() { Scanner scanner = new Scanner(System.in); System.out.print("ID 입력: "); id = scanner.nextInt(); System.out.print("이름 입력: "); name = scanner.next(); } public static void main(String[] args) { MyClass obj = new MyClass(); // 생성자 호출 System.out.println(obj.id); // 입력한 ID 출력 System.out.println(obj.name); // 입력한 이름 출력 } } 위의 예시에서 첫 번째 방법은 생성자 오버로딩을 사용하여 매개변수를 전달하는 생성자를 추가하는 방법입니다. 두 번째 방법은 인스턴스를 생성한 후에 메서드를 호출하여 매개변수를 설정하는 방법입니다. 세 번째 방법은 생성자 내에서 사용자로부터 매개변수를 입력받는 방법입니다. 어떤 방법을 선택할지는 상황에 따라 다를 수 있습니다. 매개변수를 필수적으로 전달해야 하는 경우에는 생성자 오버로딩 또는 인스턴스 생성 후 메서드 호출 방법을 사용할 수 있습니다. 사용자로부터 입력을 받아야 하는 경우에는 생성자 내에서 입력을 받는 방법을 사용할 수 있습니다. 더 자세한 예시나 질문이 있으시면 언제든지 말씀해주세요!
첫 번째 방법은 생성자 오버로딩을 사용하는 방법입니다. 생성자 오버로딩은 같은 이름의 생성자를 여러 개 정의하여 매개변수의 개수나 타입을 다르게 처리할 수 있도록 합니다. 즉, 클래스 내에 여러 개의 생성자를 만들어서 각각 다른 매개변수를 받을 수 있도록 하는 것이죠. 이렇게 생성자를 오버로딩하면 객체를 생성할 때 필요한 매개변수를 전달하여 객체를 초기화할 수 있습니다. 두 번째 방법은 인스턴스를 생성한 후에 메서드를 호출하여 매개변수를 설정하는 방법입니다. 이 방법은 객체를 생성한 후에 별도의 메서드를 호출하여 필요한 매개변수를 전달하는 방식입니다. 예를 들어, 생성자를 호출해서 객체를 초기화한 후에 setInfo()라는 메서드를 호출하여 객체의 매개변수를 설정하는 것입니다. 간단하게 말하자면, 첫 번째 방법은 객체 생성과 동시에 매개변수를 전달하여 초기화하는 방법이고, 두 번째 방법은 객체를 생성한 후에 별도의 메서드를 호출하여 매개변수를 설정하는 방법입니다. 어떤 방법을 선택할지는 상황과 개발자의 선호에 따라 다를 수 있습니다. 첫 번째 방법은 객체 생성 시 매개변수를 바로 전달하여 초기화하기 때문에 간편하고 명확한 초기화가 가능합니다. 두 번째 방법은 객체 생성 후에 메서드를 호출하여 매개변수를 설정하기 때문에 유연한 초기화가 가능합니다. 더 궁금한 점이 있으시면 언제든지 물어보세요!
생성자의 매개변수 중 하나를 필수로 두고, 다른 하나를 기본값으로 지정할 수 있습니다. 이를 가능하게 하는 방법은 다음과 같습니다. java public class MyClass { private int id; private String name; public MyClass(int id) { this.id = id; this.name = "기본 이름"; } public MyClass(int id, String name) { this.id = id; this.name = name; } public static void main(String[] args) { MyClass obj1 = new MyClass(1); // 필수 매개변수만 전달하는 생성자 호출 System.out.println(obj1.id); // 출력: 1 System.out.println(obj1.name); // 출력: "기본 이름" MyClass obj2 = new MyClass(2, "뤼튼"); // 필수 매개변수와 선택적 매개변수를 전달하는 생성자 호출 System.out.println(obj2.id); // 출력: 2 System.out.println(obj2.name); // 출력: "뤼튼" } } 위의 예시에서 MyClass 클래스는 생성자를 두 개 가지고 있습니다. 첫 번째 생성자는 id라는 필수 매개변수를 받으며, name은 기본값인 "기본 이름"으로 설정됩니다. 두 번째 생성자는 id와 name 두 개의 매개변수를 받아서 해당 값을 설정합니다. 따라서, 객체를 생성할 때 id는 필수로 전달해야 하지만, name은 선택적으로 전달할 수 있습니다. name을 전달하지 않을 경우에는 기본값인 "기본 이름"이 설정됩니다. 이와 같이 생성자를 오버로딩하여 매개변수를 다르게 받는 방식을 사용하면, 필수 매개변수와 선택적 매개변수를 조합하여 객체를 초기화할 수 있습니다.
💡
주의) 생성자(메소드)를 1개라도 선언하면, 컴파일러는 기본 생성자(메서드) 추가 X ex) 헬스장 수건
 
그렇지만 이렇게는 해줌. (기본생성자)
notion image
notion image
 
notion image
매개변수 1개 설정하고 내가 원하는 값 넣고 한 개는 비어두면, 기본 값으로 설정됨.
 
 
 
 
notion image
매개변수를 이름만 주고 id가 없을 때는 3으로 나오게 내가 지정
생성자의 매개변수 중 하나를 필수로 두고, 다른 하나를 기본값으로 지정할 수 있습니다. 이를 가능하게 하는 방법은 다음과 같습니다. java public class MyClass { private int id; private String name; public MyClass(int id) { this.id = id; this.name = "기본 이름"; } public MyClass(int id, String name) { this.id = id; this.name = name; } public static void main(String[] args) { MyClass obj1 = new MyClass(1); // 필수 매개변수만 전달하는 생성자 호출 System.out.println(obj1.id); // 출력: 1 System.out.println(obj1.name); // 출력: "기본 이름" MyClass obj2 = new MyClass(2, "뤼튼"); // 필수 매개변수와 선택적 매개변수를 전달하는 생성자 호출 System.out.println(obj2.id); // 출력: 2 System.out.println(obj2.name); // 출력: "뤼튼" } } 위의 예시에서 MyClass 클래스는 생성자를 두 개 가지고 있습니다. 첫 번째 생성자는 id라는 필수 매개변수를 받으며, name은 기본값인 "기본 이름"으로 설정됩니다. 두 번째 생성자는 id와 name 두 개의 매개변수를 받아서 해당 값을 설정합니다. 따라서, 객체를 생성할 때 id는 필수로 전달해야 하지만, name은 선택적으로 전달할 수 있습니다. name을 전달하지 않을 경우에는 기본값인 "기본 이름"이 설정됩니다. 이와 같이 생성자를 오버로딩하여 매개변수를 다르게 받는 방식을 사용하면, 필수 매개변수와 선택적 매개변수를 조합하여 객체를 초기화할 수 있습니다. 추가적인 질문이 있으시면 언제든지 물어보세요!
8번.
 
notion image
notion image
Share article

Coding's note