언어/java

nhg

Eprld 2024. 2. 17. 14:00

//private   강력한 형태의 필드와 메서드를 보호하는 형태임 
//Encapsulation : 멤버 은닉화. 객체의 속성 중에 외부에 노출되지 말아야 할 속성을 private 을 적용해서 
//내부에서만 접근 가능하도록 하는 것
    String name; //멤버필드로 선언됨. 
   //이 필드를 클래스 외부에서 접근시엔 반드시 객체를 생성해야만 접근 가능함
   //헷갈리지 말아야 할 것은, 이 클래스 내부에 정의하는 
   //멤버 메서드에서는 당연히 접근 가능함'

 

 

public Avi6Student() {//생성자, 리턴타입이 없음 아규먼츠도 없음 - 기본 생성자임 
      name = null;
      age = 0;
      addr = null; //아무것도 안 넣었을 때 나오는 기본, 객체들 객체 초기화 가능
   }
   
   //생성자 오버로딩
   public Avi6Student(String theName) {//시그니처가 똑같음 그래서 오버로딩을 함
      name = theName;
   }
   public Avi6Student(String theName, int theAge) {//시그니처가 똑같음 그래서 오버로딩을 함
      //생성자에서의 this() : 생성자에서 다른 생성자를 호출할떄 사용하는 키워드
      //파라미터는 호출하고 싶은 생성자의 args 의 시그니쳐에 맞게 넣어주면, 컴파일러가 알아서 호출해줌
      //!!!!!!중요!!!!!!!!! this() 는 생성자의 첫머리에서만 호출 가능하며, 한번만 가능
      this(theName);
      age = theAge;
   }
   public Avi6Student(String theName, int theAge, String addr) {
      this(theName, theAge);
      this.addr = addr;
   }
   
   

   //생성되는 인스턴스의 객체 변수 선언
//   private int count = 1;
   
   
   //생성자(constructor) : 클래스의 instance 를 생성하고, 필요시 필드값을 초기화하느 역할을 하는 일종의 메서드
   //메서드와의 차이점은 숙지 해야 함
   
   //이 생성자가 없으면 인스턴스를 생성하지 못함(VM 이)
   //꼭 기억(매우 중요)
   /*
    * 프로그래머가 클래스를 정의할 떄  생성자를 정의하지 않으면, 컴파일시 컴파일러가 기본생성자(Default Constructor) 를
    * 컴파일시에 클래스 내부에 자동으로 넣어줌
    * 
    * 그렇기 떄문에 생성자를 정의하지 않아도 기본 객체를 만들 수 있는 이유임
    * 
    * 기본생성자란, 아규먼트가 하나도 없는 생성자를 말함
    * 
    * 하지만!!!!!!!!! 만약 프로그래머가 생성자를 하나 이상 클래스에 정의하게 되면
    * 컴파일러는 기본생성자를 제공하지 않게 됨
    * 
    * 반드시 기억!!!!!!
    * 
    * 이렇게 될 경우엔, 정의된 클래스의 인스턴스를 생성할 떄는 반드시 정의한 생성자 중 하나를 호출해야만 인스턴스를 만들 수 있음
    * 
    */

'언어 > java' 카테고리의 다른 글

제어문 Switch  (0) 2024.02.17
조건문 if  (0) 2024.02.17
240216(2)  (0) 2024.02.16
class 캡슐화  (0) 2024.02.16
public  (0) 2024.02.16