기본형 매개변수, 참조형 매개변수
기본형 매개변수 : 변수의 값을 읽기만 할 수 있다.
참조형 매개변수 : 변수의 값을 읽고 변경할 수 있다.
class Data {int x;}
class Ex{
public static void main(String[] args){
Data d = new Data();
d.x = 10;
System.out.println("main() : x ="+d.x);
change(d.x); //1000
System.out.println("main() : x = "+d.x); //10 (change의 x만 변경된 것)
}
static void change(int x){ //기본형 매개변수
x = 1000; //x의 값을 바꾸기만 함
System.out.println("change() : x = "+x);
}
}
-----------------------------------------------------------------------------------------
class Data2{int x;}
class Ex{
public static void main(String[] args){
Data2 d = new Data2();
d.x = 10;
System.out.println("main() : x ="+d.x); //10
change(d); //1000
System.out.println("main() : x = "+d.x); //주소를 복사했기 때문에 1000
}
static void change(Data2 d){ //참조형 매개변수
d.x = 1000; //객체를 받아 x의 값을 변경함
System.out.println("change() : x = "+ d.x);
}
}
참조형 반환타입
class Data3 {int x;}
class Ex {
public static void main(String[] args){
Data3 d = new Data3();
d.x = 10;
Data3 d2 = copy(d); //반환된 tmp를 d2에 저장
System.out.println("d.x = "+d.x); //10
System.out.println("d2.x = "+d2.x); //10
}
static Data3 copy(Data3 d){
Data3 tmp = new Data3(); //객체 tmp를 생성
tmp.x = d.x; //d.x의 값을 tmp.x에 복사한다
return tmp; //복사한 객체의 주소를 반환한다
}
}
메서드 간의 호출과 참조
class TestClass {
int iv;
static int cv;
void instanceMethod(){}
static void staticMethod(){}
static void staticMethod2 (){
instanceMethod(); //static 메서드는 인스턴스 메서드를 호출 할 수 없다
staticMethod():
System.out.println(iv); //static 메서드는 인스턴스 변수를 호출 할 수 없다
System.out.println(cv);
}
오버로딩
같은 메서드명으로 여러개의 메서드를 작성하는 것
조건
- 메서드명이 같아야 함
- 매개변수의 타입 또는 개수가 달라야 함
class Ex{
int add(int a, int b){
return a+b;
}
int add(long a, int b){
return a+b;
}
int add(int a, long b){ //이 경우 위의 메서드와 혼선이 올 수 있기 때문에
return a+b; // mm.add(3,3L) 이런식으로 명확하게 인자를 주어야 한다
}
생성자 (constructor)
인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드
(연산자 new가 인스턴스를 생성하는 것. 혼동하는 것에 유의)
- 생성자의 이름은 클래스의 이름과 같아야 함
- 생성자는 리턴 값이 없음
//기본생성자 : 생성자가 없으면 자동으로 추가됨
class Data_1 {
int value;
}
class Data_2{
int value;
Data_2(int x){
value = x;
}
}
class Ex {
public static void main(String[] args) {
Data_1 d1 = new Data_1(); >> 자동으로 기본생성자가 만들어짐
Data_2 d2 = new Data_2(); >> 이미 생성자가 있어 만들어지지 않고 에러 발생
//매개변수가 있는 생성자
class Car{
String color;
String gearType;
int door;
Car(){}
Car(String c, String g, int d){
color = c;
gearType = g;
door = d;
}
}
class Ex {
public static void main(String[] args) {
Car c1 = new Car(); >> 기본생성자로 만들어짐
Car c2 = new Car("white", "auto", 4); >> 매개변수 생성자로 생성됨
}
}
-자바의 정석 기초편 책으로 공부하였습니다
-객체 지향 파트는 더 꼼꼼히 복습하자!
반응형
'IT 기초 > JAVA' 카테고리의 다른 글
[java 정리] 객체지향 프로그래밍II (1) (0) | 2022.07.26 |
---|---|
[java 정리] 객체지향 프로그래밍I (3) (0) | 2022.07.26 |
[java 정리] 객체지향 프로그래밍I (1) (0) | 2022.07.02 |
[java 정리] 변수, 상수, 리터럴, Scanner (0) | 2022.06.28 |
[java 정리] 출력문 (0) | 2022.06.28 |
댓글