객체지향의 장점
1. 코드의 재사용성이 높다.
2. 코드의 관리가 용이하다.
3. 신뢰성이 높은 프로그래밍을 가능하게한다.
클래스 - 객체의 설계도(객체를 생성하는데 사용한다.) --(인스턴스화)--> 객체 - 실제로 존재하는것(기능과 속성을 담고 있다.)
클래스 작성시 주의 사항
한 파일에 public 이 붙은 class는 단 하나만 존재해야한다.
객체 생성하는 방법
클래스명 변수명 = new 클래스명();
인스턴스의 멤버변수(속성)을 사용하려면 참조변수.멤버변수 와 같이 사용하면 된다.
필드 (클래스에 포함된 변수) 클래스 변수, 인스턴스 변수 이며 이둘의 차이를 static으로 구별시켜준다.
클래스 변수(static) -> 인스턴스 변수와 달리 생성이 필요없고, 바로 클래스이름.클래스 변수 같은 형식으로 사용 해주면 된다. 또한, 클래스 변수는 모든 인스턴스가 공통된 저장공간을 공유한다.
인스턴스 변수 -> 인스턴스를 생성할 때 만들어진다. 인스턴스마다 별도의 저장공간을 가져, 서로 다른 값을 가질수 있다.
메서드(기능)
자바제어자 반환타입(void가 아니면 무조건 return을 해줘야한다) 메서드명(매개변수) // 메서드 시그니처
{ 메서드 내용// 메서드 바디 }
클래스 메서드(static) -> 변수와 마찬가지로 클래스 이름.메서드이름(매개변수) 로 호출이 가능하다.
인스턴스 메서드 -> 객체를 생성해야만 호출이 가능.
메서드의 호출
같은 클래스에 속한 멤버들 간은 인스턴스를 생성하지 않고 참조 또는 호출이 가능하지만, 클래스멤버가 인스턴스 멤버를 잠조 또는 호출할땐 인스턴스를 생성후 해야한다. -> 클래스 멤버는 인스턴스 멤버가 존재하지 않아도 이미 존재하지만, 클래스 멤버가 존재하는 시점에 인스턴스 멤버는 존재 하지 않을수도 있다.
호출 흐름
- 메서드가 호출되면 수행에 필요한 만큼의 메모리를 스택에 할당받는다.
- 메서드가 수행을 마치고 나면 사용했던 메모리를 반환, 스택에서 제거된다.
- 호출스택의 제일 위에 있는 메서드가 현재 실행중인 메서드.
- 아래에 있는 메서드가 바로 위의 메서드를 호출한 메서드
오버로딩
하나의 클래스 안에 같은 이름의 메서드를 여러개 정의한 것 이다.
오버로딩이 성립하려면
1. 메서드 이름이 같아야 한다.
2. 매개변수의 개수 또는 타입이 달라야 한다.
3. 반환 타입은 관계없다.
더 공부해야하는 내용들
글로만 봐서는 뭔가 이해가 잘 안가는 부분이 많은것같아 실제로 코드를 많이 쳐봐야 할 것 같다.
오늘의 느낀점
점점 개념이 어려워지고 복잡해지고있다.. 정신차리고 흐름을 잘 따라가야 길을 잃지 않을것같다..
'자바(JAVA)' 카테고리의 다른 글
Eclipse 패키지 생성하기 (0) | 2023.08.10 |
---|---|
객체지향 프로그래밍(생성자, 내부 클래스) (0) | 2022.11.07 |
클래스(Class), 객체(Object) 공부하기 (0) | 2022.11.04 |
배열공부하기 (0) | 2022.11.03 |
제어문, 반복문 공부하기 (0) | 2022.11.03 |