인자 전달 방식
1. 값 호출(Call by value)
- 기본 자료형의 값을 인자로 전달하는 방식. 값을 복사하여 전달
2. 참조 호출(Call by reference)
- 메서드 호출시 전달하려는 인자를 참조(객체) 자료형을 사용할 경우를 의미. 주소(reference)를 복사하여 전달
3. 가변 인자(Variable Arguments)
- 자료형이 일치할 때 전달하고자 하는 값의 갯수를 다르게 지정할 수 있다. 전달되는 데이터는 내부적으로 배열로 인식한다.
- 인자를 (int … n) 으로 정의해주면 해당 메서드를 사용할 때 넣은 인자들을 배열로 처리한다.따라서 하나를 넣든 여러 개를 넣든 처리가 가변적으로 처리가 가능하다. 또한 인자를 전달하지 않아도 빈 배열로 처리해서 에러가 발생하지 않는다.
public class MethodArgMain03 {
/*
* 가변 인자
* Variable Arguments
* 자료형이 일치할 때 전달하고자 하는 값의 개수를 다르게 지정할 수 있음
* 전달되는 데이터는 내부적으로 배열로 인식함
*/
public void argTest(int ... n) { // <- n을 배열로 인식함
for(int i=0; i<n.length; i++) {
System.out.println(n[i]);
}
}
public static void main(String[] args) {
MethodArgMain03 ma = new MethodArgMain03();
ma.argTest(1);
ma.argTest(10,20,30);
ma.argTest(new int[] {100,200,300});
}
}
접근 제한자
https://tmddus3002.tistory.com/67
접근 제한자
접근 제한자 경우에 따라서는 객체의 필드를 외부에서 변경하거나 메소드를 호출할 수 없도록 막아야 할 필요가 있다. 중요한 필드와 메소드가 외부로 노출되지 않도록 해 객체의 무결성(결점
tmddus3002.tistory.com
메서드 오버로딩
- Overloading(중복정의)이라는 것은 하나의 클래스 내에서 같은 이름을 가지는 메서드가 여러개 정의되는 것을 말한다. 이것은 컴파일 시 컴파일러에 의해 각 메서드들이 구별되며 기준은 인자가 된다. 인자의 타입 또는 갯수, 배치된 순서가 다를 경우 다른 메서드로 인식한다.
- 이런 Overloading 기법이 필요한 이유는 같은 목적으로 비슷한 동작을 수행하는 메서드들을 모아 이름을 같게 하면 프로그래머로 하여금 다양한 메서드들을 같은 이름으로 일관된 작을 할 수 있다는 편리함이 있다.
public class OverloadingMain01 { /* * Method Overloading(중복정의)은 하나의 클래스 내에서 같은 이름을 * 가지는 메서드가 여러 개 정의되는 것을 말함. * 메서드명은 동일하게 하고 인자의 타입 또는 개수, 배치된 순서가 다를 경우 * 다른 메서드로 인식함 */ public void print(int n){ System.out.println("정수 n = " + n); } public void print(double n) { System.out.println("소수 n = " + n); } public void print(double n, long a) { System.out.println("실수 n = " + n + ", 정수 a = " + a); } public void print(long a, double n) { System.out.println("실수 n = " + n + ", 정수 a = " + a); } public static void main(String[] args) { OverloadingMain01 om = new OverloadingMain01(); om.print(20); om.print(5.6); om.print(3.7, 1234L); om.print(5678L,5.8); } }
생성자
생성자는 객체가 생성될 때 자동적으로 단 한번 호출되어 필드의 초기화하거나 객체 생성시 반드시 호출되어야 하는 메소드를 호출하는 역할을 한다. 생성자의 구조는 메소드와 비슷하지만 메소드명이 반드시 클래스와 동일해야 하고 리턴타입이 없다.
생성자의 특징
- return Type이 전혀 정의되지 않는다.
- 생성자의 이름이 클래스 명과 같아야 한다.
- 생성자 내부에서 특정 작업을 수행할 수 있고 데이터를 인자에 전달하여 전달받은 데이터를 활용할 수도 있다.
생성자 오버로딩
기본 생성자 하나만을 명시할 수 있는 것이 아니라 다양한 인자를 전달 받아 가공할 수 있는 생성자를 여러개 만들어 사용할 수 있다. 메서드 오버로딩처럼 인자의 타입, 갯수, 배치 순서가 다를 경우 다른 생성자로 인식한다.
생성자를 오버로딩하여 작성한 경우 기본 생성자를 자동으로 만들어주지 않으니 기본 생성자를 따로 작성해야 한다.
class Car2{
String color;
String gearType;
int door;
public Car2() {
}
// 커스텀 생성자를 넣으면 기본 생성자를 안만들어줌
public Car2(String c, String g, int d) {
color = c;
gearType = g;
door = d;
}
}
public class CarMain02 {
public static void main(String[] args) {
// Car2 car2 = new Car2(); // -> 커스텀 생성자가 있기 때문에 기본 생성자가 없어서 에러가 생김
//객체 선언 및 생성
Car2 car2 = new Car2("검정색","manual",4);
System.out.println(car2.color+","+car2.gearType+","+car2.door);
}
}
void 메서드
- void 메서드는 return을 생략해도 된다. 하지만 return을 활용할 수도 있다.

this
객체 내부에서 객체 자신을 칭하고 싶을 때나 아니면 지역변수와 멤버변수를 구별해야 할 때도 있을 것이다. 이럴 때 사용하는 객체 자신을 가리킬 수 있는 유일한 reference이다. 이것이 바로 this이다.
this()
이것은 현재 객체의 생성자를 의미하는 것이다. 주의 해야 할 점은 생성자의 첫 행에 정의해야 한다는 것이며 그렇지 않으면 Compile시 오류가 발생한다. 다시 말하면 이 **this()**를 이용하여 한 클래스 내의 특정 생성자에서 Overloading되어 있는 다른 생성자를 호출할 수 있는 것이다. 그렇게 함으로 해서 생성자에서 코딩 내용이 중복되는 부분을 막을 수 있다.
'IT 국비 교육' 카테고리의 다른 글
쌍용교육센터 - 10일 (0) | 2024.02.29 |
---|---|
쌍용교육센터 - 9일 (0) | 2024.02.28 |
쌍용교육센터 - 7일 (0) | 2024.02.26 |
쌍용교육센터 - 6일 (0) | 2024.02.23 |
쌍용교육센터 - 4일~5일 (0) | 2024.02.21 |