본문 바로가기

자바(JAVA)

객체지향 프로그래밍(클래스, 객체, 필드, 메서드)

객체지향의 장점

 1. 코드의 재사용성이 높다.

 2. 코드의 관리가 용이하다.

 3. 신뢰성이 높은 프로그래밍을 가능하게한다.

 

클래스 - 객체의 설계도(객체를 생성하는데 사용한다.) --(인스턴스화)--> 객체 - 실제로 존재하는것(기능과 속성을 담고 있다.)

 

클래스 작성시 주의 사항

 한 파일에 public 이 붙은 class는 단 하나만 존재해야한다.

 

객체 생성하는 방법

 클래스명 변수명 = new 클래스명();

 

인스턴스의 멤버변수(속성)을 사용하려면 참조변수.멤버변수 와 같이 사용하면 된다.

 

필드 (클래스에 포함된 변수) 클래스 변수, 인스턴스 변수 이며 이둘의 차이를 static으로 구별시켜준다.

 

 클래스 변수(static) -> 인스턴스 변수와 달리 생성이 필요없고, 바로 클래스이름.클래스 변수 같은 형식으로 사용 해주면   된다. 또한, 클래스 변수는 모든 인스턴스가 공통된 저장공간을 공유한다.

 인스턴스 변수 -> 인스턴스를 생성할 때 만들어진다. 인스턴스마다 별도의 저장공간을 가져, 서로 다른 값을 가질수 있다.

 

메서드(기능)

 

자바제어자 반환타입(void가 아니면 무조건 return을 해줘야한다) 메서드명(매개변수) // 메서드 시그니처
{ 메서드 내용// 메서드 바디 }

 클래스 메서드(static) -> 변수와 마찬가지로 클래스 이름.메서드이름(매개변수) 로 호출이 가능하다.

 인스턴스 메서드 -> 객체를 생성해야만 호출이 가능.

 

메서드의 호출

같은 클래스에 속한 멤버들 간은 인스턴스를 생성하지 않고 참조 또는 호출이 가능하지만, 클래스멤버가 인스턴스 멤버를 잠조 또는 호출할땐 인스턴스를 생성후 해야한다. -> 클래스 멤버는 인스턴스 멤버가 존재하지 않아도 이미 존재하지만, 클래스 멤버가 존재하는 시점에 인스턴스 멤버는 존재 하지 않을수도 있다.

 

호출 흐름 

 - 메서드가 호출되면 수행에 필요한 만큼의 메모리를 스택에 할당받는다.

 - 메서드가 수행을 마치고 나면 사용했던 메모리를 반환, 스택에서 제거된다.

 - 호출스택의 제일 위에 있는 메서드가 현재 실행중인 메서드.

 - 아래에 있는 메서드가 바로 위의 메서드를 호출한 메서드

 

오버로딩

 하나의 클래스 안에 같은 이름의 메서드를 여러개 정의한 것 이다.

 오버로딩이 성립하려면 

  1. 메서드 이름이 같아야 한다.

  2. 매개변수의 개수 또는 타입이 달라야 한다.

  3. 반환 타입은 관계없다.

 

더 공부해야하는 내용들

글로만 봐서는 뭔가 이해가 잘 안가는 부분이 많은것같아 실제로 코드를 많이 쳐봐야 할 것 같다.

 

오늘의 느낀점

점점 개념이 어려워지고 복잡해지고있다.. 정신차리고 흐름을 잘 따라가야 길을 잃지 않을것같다..