Govern/Eclipse SE -설치,문장,배열

07-15(목) 지정자 생성자 매개변수

Mary's log 2021. 7. 15. 09:32

※ 개인적인 개발 수업 정리글입니다. 꾸준히 정리할 예정이고 틀린 부분이 있다면 언제든지 댓글 환영입니다.


5장. 클래스

클래스의 3가지 구성요소

  • 인스턴스 변수 ( instance variable )
    클래스 구성요소인 속성값을 저장하기 위한 용도 =‘멤버변수’. 기본데이터형 참조데이터형 변수 전부가능

  • 메서드 ( method )
    인스턴스 변수에 저장된 속성 값을 수정,조회,다양한 기능 처리 및 중복처리
    담당 역할이며 ‘멤버메서드’라고도 부른다. ='함수'

  • 생성자 ( constructor )
    인스턴스 변수를 초기화 하는 역할이다. 즉 변수에 데이터를 맨 처음 지정할 때 사용된다.
    메서드를 이용해서 변수 초기화를 할 수도 있지만 생성자를 이용해서 초기화 작업을 하는
    것을 권장하며 메서드는 데이터 값을 수정할 목적으로 사용된다.

지정자

지정자 ( modifier )
- 지정자는 특정 목적을 위해서 사용하는 키워드를 의미한다. 클래스, 변수, 메서드 선언에 사용할 수 있고 생략이 가능하다.


지정자의 2가지 종류

  • 일반 지정자 (modifier)
    => static, final , abstract ='키워드'

  • 접근 지정자 ( access modifier)
    => private , protected , (default) , public 4가지가 있다.
    => 일반적으로 클래스는 public를 사용한다.

 

Student.java

TestStudent.java

 

05Day1_CLASS 프로젝트 복붙해서 05Day1_CLASS2 생성

 

 05Day1_CLASS2 프로젝트의 Student.java  - 디폴트 접근제한자 사용

05Day1_CLASS 프로젝트 복붙해서 05Day1_CLASS3 생성

 

 05Day1_CLASS2 프로젝트의 Student.java  - private 접근제한자 사용

private 접근제한자를 걸면 다른 클라스에 에러가 걸림.

Student클래스의 값을 끌어다가 다른 클래스에서 참조했기 때문인데 private이 걸려 있으니까...


 

내가 정리한  [ 지정자+형+변수 ] 란,,,,

지정자    +   형태    +   변수  ==>이걸로 "변수 선언"만 된거임!!!!!

지정자

public
private
공백(default)
+ 클래스· 형태

class
String
int
+ 클래스· 변수명  ;

num       ;
Student  ;
Dept      ;

"변수 선언" 후에 변수에 값을 넣어줘야하는걸, "변수 초기화" 꼭해줘야함

(멤버변수라면, 기본값으로 자동초기화 지역변수는 꼭 초기)

 

[   선언된 변수 = 넣을 값 ;    ==>이걸로 "변수 초기화" 된거임!!!!!

선언된 변수

num
Student
Dept
= 넣을 값 ; 

"영업" ;
20 ;
'합'

 

∴  지정자 + 형태  + 변수  = 넣을 값 ; ] ==>"변수선언&초기화" 다 된거임!!!!!

       공백      String   name  = "김박이" ;

      public       int      num   =  20       ;

      private     String   addr   = "제주"  ;  


생성자= 인스터스변수(멤버변수)를 초기화=  멤버변수에  데이터 처음 저장

 내가 정리한..생성자란, 일단  [ 생성자문법{ } ] 이니까 } 끝에 ; 안 적는다 소영아...

 

< 생성자 문법 >

지정자  +  클래스명(매개변수=>멤버변수에서 뽑아옴) { 이 생성자를 호출하면 사용할 내용, 즉 저장할 데이터 }

 

public     Student ( ) { }       => 매개변수가 공백이면,  [ 클래스명( ) ] =>기본생성자라는 뜻

public     Student (String name, int age ) { }       

                                        => 클래스Student의 멤버변수인, String name,int age를 매개변수로 쓴단

 

 

/05Day3_constructor 프로젝트 복붙해서

/05Day3_constructor2 생성

 

 

/05Day3_constructor2 프로젝트의 Student.java 

인자(매개변수)가 없는 생성자 : 기본생성자 (default생성자)

 

/05Day3_constructor2 프로젝트 복붙해서

/05Day3_constructor3 생성

 

 

/05Day3_constructor3 프로젝트의 Student.java 

생성자의 오버로딩(overloading)

this.name=name; 이거 지금 초기화하는거임!!!!!!!!!!!!

클래스 Student의 멤버변수에도  name이 있고,

클래스 Student의 지역 변수에도 name이 있는데,

변수 이름이 중복이니까, 초기화 당하는 멤버변수 앞에 this.를 붙여주는 것!!!!!!!

 

 

긍까...  public Student( 여기! 여기가,이 안이 )    student는 멤버변수

다른 클래스의 Student stu1 = new Student (" 여기! 여기랑"); stu1라는 지역변수가 객체생성

머선 상관이냐굿?

 

인자 argument       : 메소드 호출시 전달하는 값

매개변수 parameter : 메소드 호출시 전달되는 인자값을 저장하는 변수

생성자를 만들 땐, 반드시 기본생성자도 만들어줘야함. 이걸로 에러 많이남

 

요렇게 보는게 더 나은듯....

 

프로젝트 이름 변경 : 클래스 다 저장하고, f2키

 

 

05Day3_constructor3 프로젝트

 

 

 

생성자 매개변수는 같아도, 순서가 다르면 다른 생성자로 봄 

만약 다른 클래스에서 호출했을때 new.Student(10,"aa");로 하면

4번째 생성자로 호출이 된다는거지 ㅇㅇ

new.Student("aa",10); 로 호출하면 3번 생성자가 호출됨

 

반드시 매개변수의   [ 순서, 타입, 개수 ]    가 달라야함

 

★ 내가 정리한,,, 객체 생성은,

< 객체 생성 >

클래스명 새로운변수명 = new 클래스명(매개변수) ;
이건데... 이건 그냥 객체 선언 그 자체인데,

지정자 static [ 함수명? ]                 ( 매개변수) { 이걸 호출하면 사용할 내용, 즉 저장할 데이터} 
지정자 static [ 형태+ 새로운변수명 ] ( 매개변수) { 이걸 호출하면 사용할 내용, 즉 저장할 데이터}=>이건가????

public static  toString  ( ) { }
public static  int num (앞과맞는형태 + 매개변수 ) { }
public static  String newname ( String name ) {    }

 

 

 

 

 

 

 

 

함수 찾으러 갈때 쉽게 찾는 방법: ctrl키+함수이름 마우스 올려두면 , 갈 수 있는 함수 위치 뜸

 

 

 

 

 

 

한 줄 전체 바로 삭제하는 키 : ctrl 키 +d

 

 


★형태=타입이라는 건 단순히

   문자, 문자열, 숫자, 이런거 뿐만 아니라

   참이냐거짓이냐의 boolean도 있고, 리턴할 타입의 return도 있고, 리턴안할 타입의 void도 있는 것.

  근데 return과 void의 경우는

지정자 + [return] 형태 + 메소드명 (매개변수파라미터) {   //리턴값이 꼭 있는 경우에는,

               실행문 ;

              return 결과값 ; }  ==>위에 return 안 쓰고 형태만 쓰는 대신에, 아래에 return값까지 꼭 써야하고,

지정자 +   void  형태 + 메소드명 (매개변수파라미터) {   //리턴값이 없는 경우에는,

               실행문 ;

                }                  ==>아래 아무것도 안 적는 대신 void를 써줘야하는거지.... !

 


 

 ' get대문자멤버변수 ' 함수 =  멤버변수의 데이터값 조회 목적

-함수자체가 이런게 있는게 아니고, 멤버변수를 가져와서 조회가 되게 리턴해주는 코드를 이클리스 내부에 미리 짜두고,

 단축키로 빨리 생성할 수 있게 해줄 뿐임.

  코드를 분석해보면 그냥 이름이 get대문자멤버변수인 함수고 리턴값이 멤버변수일 뿐임.

< get 메소드 문법>
[지정자] + [return] 타입 + 메소드명 + (매개변수파라미터) {
           처리할 실행문 ; ...
           return 결과값 ;  // 위의 타입과 같은 타입이어야함.
          }                        위 타입이 String이면, return 결과값 타입도 String여야함
               

public       String         getName ( ) {   // 파라미터는 멤버변수의 기본값?????
                return this.name ;             //리턴값을, 호출한 곳으로 돌려보냄
               }
public        int             getNum ( ) {   // 파라미터는 멤버변수의 기본값?????
                return this.num ;             //리턴값을, 호출한 곳으로 돌려보냄
               }

 


' set대문자멤버변수 ' 함수  = 멤버변수의 데이터값 수정 목적

-함수자체가 이런게 있는게 아니고, 멤버변수를 가져와서 수정하는 코드를 이클리스 내부에 미리 짜두고,

 단축키로 빨리 생성할 수 있게 해줄 뿐임.

 코드를 분석해보면 그냥 이름이 set대문자멤버변수인 함수임. 리턴은 없고, 수정한 값을 멤버변수에 초기화할 뿐.

< set 메소드 문법>
[지정자] + void 형태 + 새로운 메소드명 + (매개변수파라미터) {  //리턴안하고 수정변경할거니까 
                메소드가 처리하는 실행문                                   //형태 말고, void를 적어줌
               }

public       void        setName ( ) {   // 파라미터는 멤버변수의 기본값?????
               this.매개변수=매개변수 ;   //수정할 값?
               }
public       void        setName ( ) {     // 파라미터는 멤버변수의 기본값?????
                this.매개변수=매개변수 ;  //수정할 값?
               }

 


 

멤버변수 하나당,
기본으로 그 변수의 get
(조회), set(수정) 가능한 함수를 만든다고 생각하기