본문 바로가기

프로그래밍/자바

자바 클래스

728x90
반응형
SMALL

이번 포스팅은 클래스에 대해서 설명하겠습니다!

 

클래스는 변수나 메소드를 재사용할때 사용하는 수단입니다!

 

자 그럼 클래스를 에 대해서 먼저 예시를 보여드릴께요!

자 먼저 class 를 생성을 해줍니다!

그리고 그 밑에 클래스를 만드는 과정에서 this라는 글자가 있죠? 이건 받아온 name이란 String을 나의 객체, 본인의 클래스 Student의 name에 넣는다 라는 뜻으로 this 를 사용합니다!

 

이렇게 객체를 만들어주고

main에서 new(새로운 클래스)를 만들어 주고 그안에 넣은 값이 Student 클래스에 a 라는 변수에 들어간것이죠!

 

그래서 클래스 변수 a 에서 name, age, grade의 값이 다 들어가 있는겁니다!

 

그럼 클래스에 대해서 몇가지 더 알아보면

  1. 클래스를 선언할때 그 안에 변수가 없다면 컴파일러가 알아서 기본 생성자를 만들어준다.
  2. 반대로 정의된 생성자가 있다면 자동으로 만들어 주지 않는다.
  3. 1,2번을 동시에 사용하고 싶다면 오버로딩으로 설정해주면 된다!

 

자 그럼 클래스를 사용하는 이유가 변수나 매소드를 재사용할 때 사용하는 수단이라고 하였는데 그렇다면 메소드와 클래스의 차이점은 뭘까요????

 

바로 클래스는 return type을 쓸 수 가 없습니다! ——> 컴퓨터구조적으로 보았을 때 이미 이 class를 return하는데 주소값을 써야하는 것으로 정해져 있기 때문에!! return을 사용하실 수 없습니다

이렇게 해주면!

이런식으로 Student b를 만드는데 문제가 없죠!

 

자 그런데 예시를 보셨다 시피 저렇게 하나하나 변수를 지정해서 프린트 해야 하는 것 너무 힘들고 귀찮지 않을까요??

 

그래서 우리는 toString이라는 메소드를 만들어 줄껍니다! 어디에?? Student 라는 class에

 

예시)

자 이렇게 toString()메소드를 임의로 만들어서 사용을 하면

메인에서 코드 한줄로 이렇게 깔끔하게 표현이 가능하다는 거죠!!

 

자 이번에는 제가 학교 과제를 진행 하면서 에러가 떠서 이게뭐지…? 했던것을 알려드릴까 합니다

자 이렇게 static으로 선언된 변수가 class안에 있다고 하고

각각의 학교 이름을 선언을 해주고 값을 넣어줬는데 하나는 고려대 하나는 연세대가 떠야하는데 둘다 연세대가 떳죠??

 

이유가 뭘까요??

 

static 변수는 이 Student 안에 있는 모든 class가 공유하는 변수가 되기 때문입니다!!

그래서 처음 넣은 값이 지워지고 나중에 넣은 값이 넣어진것이죠!!

 

한국말로 찾아보니 정적변수 = static 이더라구요!  그래서 사용 하실때 주의 하셔야 합니다!

 

같은 이유로 메소드를 static으로 선언을 해주게 되면!

각각의 클래스로 사용하는것이 아닌 클래스 이름으로 메소드를 사용해주는 것이 더 쉽고 간단하겠죠?

 

그래서 static 변수의 더 자세하게 설명하자면 

  1. 객체끼리의 값을 공유한다

So, 모든 객체가 동일하게 사용 될때 사용한다.

 

Static 메소드

1. 객체와는 상관없이 메소드를 사용한다.

So, 이 메소드는 메소드 안에서 인스턴스 변수사용이 불가능하다!

but, static 변수는 사용이 가능하다!

 

그래서 Static 메소드를 사용 할 때네는 인트턴스 변수를 사용할때에는 비효율적이다!

 

라고 생각해주시면 좋겠습니다

 

인스턴스 변수란 메소드 안에서만 사용되고 마는 변수를 뜻합니다!

 

자 Static에 대해서 배워 보았으니 다른 변수들에 대해서도 알아 보도록 하겠습니다

 

Private

Public

Protected

Default(저번 반복문과 마찬가지로 정해지지 않으면 자동으로)

 

이러한 단어들을 변수를 지정할 때 본적이 있으신가요??

 

이러한 것들을 접근지정자 라고 불립니다!

하나 하나 설명 해보겠습니다!

 

private 변수는 그 클래스 안에서만 활용되는 변수라고 보시면 되겠습니다!

그래서 다른 클래스나 패키지로 부터 사용이 불가하죠! 딱 그 클래스만 사용이 가능합니다

 

public은 말그대로 공용입니다 이 변수나 메소드는 같은 클래스나 같은 패키지 뿐만 아니라 다른 패키지, 상속된 자식 클래스에서도 사용이 가능 합니다!

 

protected는 보호받는 다는 뜻을 가지고 있죠! 이 변수나 메소드는 관련된 모든 곳에서는 사용이 가능합니다!

(이 지정자는 상속class를 사용할때 많이 사용합니다!)

default는 public과 비슷한 느낌을 주지만 다른 패키지에서는 사용 할 수 없습니다!

 

제가 간단하게 표로 만들었습니다!

728x90
반응형
LIST

'프로그래밍 > 자바' 카테고리의 다른 글

자바 상속  (0) 2021.11.16
자바 클래스와 배열  (0) 2021.11.16
자바 메소드  (0) 2021.11.10
자바 반복문 2  (0) 2021.11.10
자바 조건문 반복문  (0) 2021.11.10