객체지향 프로그래밍 I

HakJun·2022년 10월 3일
0

1. 하나의 소스파일에 여러 클래스 작성

하나의 소스파일에는 하나의 public class 가 존재한다.

소스파일의 이름은 public class 이름과 일치해야 한다.

Java는 대소문자 구분한다. 대소문자를 맞춰줘야한다.

하나의 소스파일에는 하나의 클래스만 작성하는 것을 권장

public class가 하나도 없을 때에는 여러 class중 어느 이름으로 해도 무관하다.

하지만 이럴 경우에는 main함수 실행할 경우 예상된 결과와 다른결과가 나온다. → class이름이 다르기 때문이다.

2. 객체의 생성과 사용

1. 변수명 = new 클래스명(): //클래스객체 생성후, 객체의 주소를 참조변수에 저장
2. 객체의 사용 : 객체가 갖고있는 변수와 메서드를 사용한다는 뜻

3. 클래스 변수 인스턴스 변수 생성 과정

먼저 methodarea에서 생성한 class가 나타난다.

이후 call stack 에 포인터c1,c2가 위치하고 heap에 생성된 객체를 c1,c2가 가리키는 형식이다.

4. 호출스택

1. 메소드 수행에 필요한 메모리가 제공되는 공간
2. 메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제
3. main이 println호출 : print가 실행될동안 main은 대기하고 print가 끝나면 main이 실행된다. 이후 프로그램이 종료된다.
    

5. 매개변수 종류

1. 기본형 매개변수 read only
    1. ex)주소값을 바꿀수 없는 지역변수 , 변수 값을 바꾸더라도 원래 주소값에 해당값을 변경할 수는 없다.
2. 참조형 매개변수 read & write
    1. ex)함수의 파라미터 값으로 주소값이나, 주소값을 갖고 생성된 인스턴스 자체를 넘길 경우 함수에서 값 변경 시 해당 주소에 있는 값 자체가 변경된다. → 
3. 참조형 변수와 지역변수가 동일할 시, 가까운 scope인 지역변수가 실행된다. 
4. 반환타입이 참조형일 경우는 객체의 주소를 반환한다.

6. static메서드와 인스턴스 메서드

1. static 붙은것에 대한 유무
2. static 메서드는 클래스이름.메서드이름()으로 호출, 객체생성없이 실행 가능. 메서드 내에서 인스턴스 변수 사용 불가.
3. static은 속성 중에서 공통속성에 static을 붙이고,  메소드에선 인스턴스 멤버를 사용하지 않는 메서드에 static을 붙인다.
4. static메소드 안에서 인스턴스 메소드를 호출할 수 없다. → 인스턴스 메소드는 인스턴스를 사용한다는 뜻이기 때문
profile
백엔드 & 전공 공부

0개의 댓글