본문 바로가기
IT 기초/JAVA

[java 정리] 객체지향 프로그래밍I (2)

by 고요히dev 2022. 7. 2.

java 객체지향

 

기본형 매개변수, 참조형 매개변수

 

기본형 매개변수 : 변수의 값을 읽기만 할 수 있다.

참조형 매개변수 : 변수의 값을 읽고 변경할 수 있다.

 

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가 인스턴스를 생성하는 것. 혼동하는 것에 유의)

 

  1. 생성자의 이름은 클래스의 이름과 같아야 함
  2. 생성자는 리턴 값이 없음
//기본생성자 : 생성자가 없으면 자동으로 추가됨

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); >> 매개변수 생성자로 생성됨
}
}

 

 

 

 

 

 

-자바의 정석 기초편 책으로 공부하였습니다

-객체 지향 파트는 더 꼼꼼히 복습하자!

반응형

댓글