person 03~
ctrl space눌렀을 때
c person - class (클래스, 클래스이름, 패키지)
😀생성자
1. 클래스를 대상으로 객체를 생성하는 과정.
* 형식) 클래스명 참조변수 = new 클래스명(); (X)
* 클래스명 참조변수 = new 생성자(); (O)
*
* 2. 생성자(Constructor)?
* 1) 클래스를 대상으로 객체를 생성하는 역할을 하는 놈.
* 2) 클래스 이름과 동일.
* 3) 클래스에 포함되어 있으며, 객체를 생성할 때 자동으로 딱 한 번만 호출이 됨.
* 4) 클래스는 생성자를 통해서 객체로 생성이 됨.
* 생성자 형식)
* [접근제한] 생성자이름(매개변수) {
* 생성자 호출 시 실행될 문장;
* }
* 5) 생성자는 메서드 형태를 가지고 있음.
* ==> 리턴타입(반환형) (X), void(X), 매개변수(O)
* 6) 모든 클래스는 반드시 한 개 이상의 생성자를 가지고 있음.
* 7) 사용자가 생성자를 정의하지 않으면, JVM이 컴파일 시점에서
* 자동으로 기본생성자를 만들어 줌.
*
* 3. 생성자 목적 : 멤버변수들의 초기화를 목적으로 사용이 됨.
*
* 4. 생성자 특징
* 1) 생성자 이름 == 클래스 이름
* 2) 메서드와 다르게 반환형이 없음.
* 3) 클래스는 반드시 한 개 이상의 생성자를 가지고 있음.
* 4) 생성자 오버로딩이 가능함(즉, 여러 개의 생성자가 존재할 수 있음).
* 5) 생성자가 보이지 않으면 기본 생성자가 숨어 있음.
* 6) 기본 생성자라 함은 매개변수가 없는 생성자를 말함.
* 7) 기본 생성자 외에 다른 생성자를 만들면, 숨어 있던 기본 생성자는 사라짐.
* **8) 기본 생성자 외에 다른 생성자를 만들면, 무조건 기본 생성자를 만들어 줄 것.
* (만약 기본 생성자를 만들지 않으면 상속에서 문제가 발생함.
* ==> 상속에서 추후 설명 예정).
인자 생성자
😀자바에서 사용되는 용어들.
* 1. 변수 : 프로그램이 끝날 때까지 언제든지 변할 수 있는 속성(데이터).
* ==> 소문자로 시작.
*
* 2. 상수 : 프로그램이 끝날 때까지 절대 변하지 않는 속성(데이터).
* ==> 모든 글자가 대문자.
*
* 3. instance(인스턴스) 변수 / 메서드.
* - 객체의 생성과 동시에 만들어 지는 변수 / 메서드.
* - 객체는 heap 메모리 공간에 만들어짐.
* 반드시 객체 생성 후에 사용이 가능함.
* - 호출방법 : 참조변수.멤버변수 / 참조변수.멤버메서드
*
* 4. static(스태틱, 정적) 변수 / 메서드.
* - 객체의 생성과 상관없이 별도로 만들어지는 변수 / 메서드.
* - static 메모리(method 영역)에서 별도로 만들어짐.
* - 공통으로 사용되는 변수 / 메서드.
* - 객체를 생성하지 않아도 어느 클래스나 접근 가능.
* - 접근하는 방법이 쉬우나 실제로 항상 메모리에 상주하게 되어 메모리 회수가 안되는 단점이 있음. // 그래서 안쓰는게 좋음(메모리 차지해서 느려짐)
* 시스템이 며칠, 몇 주 혹은 몇 달 정도 가동이 되면 점점 느려지는 현상이 발생을 함.
* - 호출방법 : 클래스이름.멤버변수 / 클래스이름.멤버메서드
*/
😀인자 생성자 - 배열
==> 배열 안의 데이터가 값이 아닌 주소값을 나타냄
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
😀* 캡슐화(Encapsulation)?
* - 객체지향 프로그램 4대 특징 중 하나.
* - 데이터를 감추기, 데이터를 외부에서 함부로 변경하지 못하도록 외부의 접근을 제한하는 방법.
* - 객체를 캡슐로 싸서 내부를 볼 수 없게 하는 것으로 객체의 가장 본질적인 특징임.
* - 예를 든다면 캡슐 약을 생각하면 쉬움.
* 캡슐에 든 약은 약이 어떤 색인지, 어떤 성분인지 보이지 않으며, 외부의 접근으로부터 안전함.
* 또한 TV에 케이스가 없다면 외부의 접촉으로부터 보호할 수 없게 됨.
* 사람이 피부나 근육으로 캡슐화 되어 있지 않다면 혈관, 장기, 뇌 등이 노출되어 상상하기 조차 싫은 끔찍한 일이 일어나게 됨.
* - 객체는 캡슐화가 기본 원칙이지만 외부와의 접속을 위해 몇몇 부분만 공개 노출하게 됨.
* - TV는 내부를 캡슐화하고 on/off 버튼, 밝기 조절 버튼, 채널 버튼, 음량 버튼, 리모컨과 통신하는 부분은 노출을 시킴.
* - 정보 은닉 : 클래스 멤버 접근 제어 기법.
* * private : 외부에서 직접 접근 차단.
* * public : 누구나 접근 가능.
* - setter() / getter() 메서드로 접근 가능.
* ==> setter() : - 지정자 메서드.
* - 멤버변수에 변경할 값을 전달 받아서 멤버변수의 값을 변경하는 메서드.
* ==> getter() : - 획득자 메서드.
* - 멤버변수의 값을 읽어 와서 호출한 곳으로 읽은 값을 넘겨주는 메서드.
* ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
/*
* getter() 메서드로 멤버변수에 할당된 값을 가져오는 메서드.
* - private 멤버변수에 할당된 값을 가져오는 역할을 하는 메서드.
*
* 형식)
* public 멤버변수자료형 get멤버변수명() {
* return 멤버변수명;
* }
*/
/*
* setter() 메서드로 멤버변수 초기값을 설정.
* - private 멤버변수 값을 지정하는 역할을 하는 메서드.
*
* 형식)
* public void set멤버변수명(자료형 매개변수) {
* 멤버변수 = 매개변수;
* }
*/
- source - generate getters & setters 로 빠르게 생성가능
😀this
* this 키워드 : 객체(Number) 자기 자신을 의미함.
* - 주로 멤버변수와 메서드 또는 생성자의 매개변수 이름이 동일할 때
* 객체의 멤버임을 명확하게 하기 위해서 사용되는 키워드.
* - 매개변수(지역변수)의 이름과 멤버변수(전역변수)의 이름이 같을 때
* 멤버변수(전역변수) 아에 this라는 키워드를 붙여서 구분할 때 사용함.
* - 메서드 내에서 지역변수와 지역변수의 이름이 같으면 지역변수가 우선순위가 높음.
*/
*생성자 overloading 다중정의
*System.out.println("학생의 학번, 이름, 학과, 연락처, 주소를 입력하세요...");
Student student = new Student(Integer.parseInt(sc.nextLine()), sc.nextLine(), sc.nextLine(), sc.nextLine(), sc.nextLine());
static | |
stack |
heap |
'자바 JAVA' 카테고리의 다른 글
23.01.16 (상속과 다형성) (0) | 2023.01.16 |
---|---|
23.01.13 (클래스와 객체) (0) | 2023.01.13 |
23.01.11 (클래스와 객체) (0) | 2023.01.11 |
23.01.10 (클래스와 객체) (0) | 2023.01.10 |
23.01.09 (클래스와 객체) (0) | 2023.01.09 |
댓글