minlog
article thumbnail

 

인스턴스 (instance)

  • 클래스는 객체의 속성을 정의하고, 기능을 구현하여 만들어 놓은 상태
  • 실제 클래스를 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수 값을 가지게 됨.
  •  new 키워드를 사용하여 인스턴스 생성

 

💡 main 파일에서 클레스 불러오는 방법

클레스타입 변수명 (인스턴스 변수 선언) =  new 객체 생성 (인스턴트화);

Account account; // 참조변수
account = new Account(); // 인스턴스 생성
System.out.println(account); // 참조값
  • 인스턴스 변수 선언 : 객체를 담기 위한 변수 객체 생성;
  • 인스턴스화 : 별도의 변수, 메서드에 대한 메모리(힙 메모리) 할당/ 임의의 주소 값을 가진다.

 

힙 메모리(heap memory)

  • 생성된 인스턴스는 동적 메모리(heap memory) 에 할당됨
  • 자바에서 Gabage Collector 가 주기 적으로 사용하지 않늠 메모리를 수거
  • 하나의 클래스로 부터 여러개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가지게 됨

 

 

용어 정리
객체 : 객체 지향 프로그램의 대상, 생성된 인스턴스
클래스 : 객체를 프로그래밍 하기위해 코드로 정의해 놓은 상태
인스턴스 : new 키워드를 사용하여 클래스를 메모리에 생성한 상태
멤버 변수 : 클래스의 속성, 특성
메서드 : 멤버 변수를 이용하여 클래스의 기능을 구현한 함수
참조 변수 : 메모리에 생성된 인스턴스를 가리키는 변수
참조 값 : 생성된 인스턴스의 메모리 주소 값

 

 

생성자

  • 생성자는 반환 값이 없고, 클래스의 이름과 동일
  • 클래스에는 반드시 하나 이상의 생성자가 존재, 클래스에 생성자를 구현하지 않아도 new 키워드와 함께 생성자를 호출 할 수 있음.(default 생성자)
  • 생성자는 객체 생성에 대한 가이드 역할. 
  • 생성자의 목적, 객체(필드)를 초기화 역할
  • 객체를 생성할때 파라미터 값을 전달할 수 있다.
  • 대부분의 생성자는 외부에서 접근 가능하지만, 필요에 의해 private 으로 선언되는 경우도 있음
  • 객체를 생성할 때 new 키워드와 함께 사용  (ex) new Student();

 ※ 디폴트 생성자를 생성해두지 않고 사용했을경우,

     오버로딩 된 (매개값이 다른) 생성자를 추가되면 디폴트 생성자로 생성한 인스턴스는 오류가 생길 수 있다.


 

💡 생성자 구현

클레스 파일

public class Account{
	String accountNo;
    String ownerName;
    int balance; //잔액

    public Account() {} //디폴트 생성자 필요. 무조건
    // 메인에서 문제 생길 수 있음. ==>메인 해당 클레스 파일에 생성자가 아무것도 없으면 , 자동으로 가상의 디폴트 생성자를 생성.
    public Account(String accountNo,String ownerName, int balance) { // 이름은 같게 해줌 => 하지만 지역변수
        //this는 자기자신의 객체 필드 변수를 지칭
        this.accountNo  = accountNo; // 필드 값을 파라미터로 넘어오는 값으로 초기화
        this.ownerName  = ownerName; // 필드 값을 파라미터로 넘어오는 값으로 초기화
        this.balance  = balance; // 필드 값을 파라미터로 넘어오는 값으로 초기화

    }
 }

 

🍫 생성자 오버로딩이 가능하다. >>  오버로딩이란?

[coding/javaProgram] - [ JAVA ] 오버로딩(Overloading)과 오버라이딩(Overriding)

 

 

메인파일

Account account;
account = new Account("111-111", "홍길동", 100);
Account account2;
account2 = new Account("222-222", "박길동", 5000);

메인파일 (생성자 파일 생성전에 복잡한 구조)

Account account; //인스턴스 변수 (객체를 담기 위한 변수)
account = new Account();

account.accountNo = "111-111";
account.ownerName = "홍길동";
account.balance = 10000;

 

profile

minlog

@jimin-log

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!