자바의 정석 복습(객체지향)

bitna's study note·2022년 5월 31일
0

자바

목록 보기
96/119

5월 31일 복습하기

1.static메서드 와 인스턴스 메서드
(1)인스턴스 메서드는 인스턴스 생성후,
'참조변수.메서드이름()'으로 호출
인스턴스멤버와 관련된 작업을 하는 메서드
메인 메서드 내에서 인스턴스변수 사용가능.

(2)static메서드는 객체생성없이'클래스이름.메서드이름()'으로 호출
예)Math.rondom 앞에 Math 클래스이름을 붙임.
static메서드는 클래스메서드라고도 부르는데,
인스턴스멤버와 관련없는 작업을 하는 메서드
메인 메서드 내에서 인스턴스변수 사용불가!

제일 큰차이는 인스턴스변수를 사용하냐 못하냐의 차이!!!

2.static을 언제 붙여야 할까?
멤버변수에서는 공통속성일때 static 변수로 선언한다.
메서드에서는 인스턴스멤버(변수,메서드)를 사용하지 않는 메서드에 static을 붙인다.

3.오버로딩
한 클래스안에 같은 이름의 메서드 여러개를 정의 하는것
메서드이름1:메서드N
(1)메서드 이름이 같아야한다.
(2)매개변수의 개수 또는 타입이 달라야한다!!
(3)반환타입은 영향이 없다.

4.생성자
인스턴스를가 생성될 때마다 호출되는 '인스턴스 초기화 메서드'
'인스턴스 초기화 메서드'를 통해서 인스턴스변수들을 초기화 하거나 자용자정의 초기화 작업을 한다.

생성자규칙
(1)생성자 이름이 클래스이름과 같아야 한다.
(2)생성자도 오버로딩이기 때문에 오버로딩 규칙(매개변수의 개수 또는 타입이 달라야 한다)을 지킨다.
(3)리턴값이 없다.(void는 안붙임. 왜? 항상반환값이 없어서)
(4)모든 클래스는 1개이상 생성자를 가진다.
컴파일러가 생성자가 하나도 없을때만 자동으로 기본생성자를 만들어줌
Card c = new Card();
객체를 생성할때 new Card(); 이부분이 기본 생성자를 호출하는 부분
(5)클래스이름(){} -> 매개변수가 없는 생성자를 '기본 생성자' 라고 한다.
컴파일러가 생성자가 하나도 없을때만 자동으로 기본생성자를 만들어주나
하나라도 생성자를 있으면 컴파일러가 생성을 안해주므로 내가 기본생성자를 만들어 줘야 한다.

5.생성자의 this()
생성자에서 다른 생성자를 호출할때 사용
코드의 중복을 제거할려고 서로 호출할일이 많음, 이때 this()를 사용
다른 생성자를 호출시 첫줄에서만 사용가능하다.

package study_0531;

public class Car {
	
	//필드선언
	String color;
	String gearType;
	int door;
	
	//생성자
	Car(){
		this("blue","auto",4); //매개변수가 없는 기본 생성자안에 아래 매개변수가 있는 생성자 호출하면서 
        						특정값을 지정해 주지 않으면 디폴드 값으로 "blue","auto",4 를 쓴다.
	}
	
	Car(String c,String g,int d){ //매개변수가 있는 생성자
		color=c;
		gearType=g;
		door=d;
	} 

}

6.참조변수 this
인스턴스 자신을 가르키는 참조변수로, 인스턴스 주소가 저장되어 있다.
인스턴스 메서드 안에서만 사용가능
생성자안에서도 쓸수 있다.
지역변수와 인스턴스변수를 구별 할때 쓰인다.

7.변수의 초기화
인스턴스 변수,클래스변수는 0이나 null같은 기본값으로 자동 초기화 해주는 기능이 있으나, 지역변수는 메모리에서의 생명주기가 짧아 일일히 초기화 하여 기억하는걸 효율이 낮아져 사용자가 직접 초기화 해야한다.

8.멤버변수(인스턴스 변수,클래스변수)의 초기화
(1)명시적 초기화
'=' 대입연산자를 통해 초기화 하는것
(2)초기화 블럭
복잡한 초기화에 사용된다.
클래스변수를 초기화 할때는 static{}을 사용한다.
(3)생성자
인스턴스변수 초기화에 사용되며, 복잡한 초기화에 사용된다.

클래스변수는 클래스가 처음 메모리에 올라갈때 단 한번 초기화
인스턴스변수는 객체가 만들어질때 마다 초기화

profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글

관련 채용 정보