※ 개인적인 개발 수업 정리글입니다. 꾸준히 정리할 예정이고 틀린 부분이 있다면 언제든지 댓글 환영입니다.
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(수정) 가능한 함수를 만든다고 생각하기
'Govern > Eclipse SE -설치,문장,배열' 카테고리의 다른 글
07-16(금) static / 싱글톤 (0) | 2021.07.16 |
---|---|
07-14(수) 배열, Arrays API (0) | 2021.07.14 |
07-13(화) for문,break,continue (0) | 2021.07.13 |
07-12(월) 문장 (0) | 2021.07.12 |
07-09(금) 형변환 연산자_valueOf,parseInt,전치후치,&& (0) | 2021.07.09 |