본문 바로가기
자바 JAVA

23.01.12 (클래스와 객체)

by 2023코딩시작 2023. 1. 12.
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

댓글