지정자
- 클래스의 멤버 앞에 액세스 가능성, 값 변경 가능성, 상속 가능성, 재정의 여부 등의 성질을 결정한다

- 액세스 : 누가 이 멤버를 읽고 쓸 수 있는지의 권한을 지정하여 외부에서 함부로 값을 변경하지 못하도록 한다
             : private - 클래스 내부에서만 액세스할 수 있다
             : protected - 클래스 내부 또는 파생된 클래스에서만 액세스할 수 있다
             : public - 외부에서 마음대로 액세스할 수 있다
             : internal - 같은 어셈블리 내에서만 액세스할 수 있다
             : protected internal - 같은 어셈블리 내에서만 또는 파생 클래스에서만 액세스할 수 있다
             : 추가된 2개의 액세스는 어셈블리의 경계 밖에서도 액세스 가능한지를 제한한다

- 액세스 지정자를 통해 중요한 멤버를 안전하게 숨김으로써 스스로 안정성 확보하는 특성 (정보 은폐)
- 하나의 멤버에 여러 개의 지정자가 필요한 경우도 있다
 ex) public static int Age;
       static public int Age;
       * 순서를 마음대로 배치할수 있고, 뜻도 같다

생성자
- 객체 생성 시에 자동으로 호출되는 메소드이며, 객체를 초기화하는 역할을 한다





- Name, Age 필드는 private 액세스 지정자를 붙여 외부에서 직접 액세스할 수 없도록 했다
- Human 생성자 추가 : aName, aAge 인수를 전달받아 필드에 대입함으로써 초기화하는 역할을 한다 

- 객체를 생성할때 자동으로 호출되며 명시적으로 호출할 수는 없다
- 클래스의 이름과 같아야 하며 사용자가 호출하는 것이 아니므로 리턴할수 없다,그래서 void도 적을 필요 없다
- new Human(); 생성문에 의해 Human 생성자가 호출된다
- 객체가 유효한 상태가 되도록 필드를 초기화하는 것, 객체 동작에 필요한 모든 처리를 다 한다





- 생성자는 필요에 따라 여러 개를 정의할 수 있다

- 각 생성자가 요구하는 인수가 다를때, 코드의 중복을 방지하기 위해 필요한 생성자를 호출한다 :this(인수)
- 이름을 초기화하는 코드가 이미 작성되어있으므로 this(aName)문으로 생성자를 호출하여 이름을 초기화한다


파괴자
- 생성자의 반대되는 메소드
- 객체가 사라질 때 정리 작업을 수행한다
- 기호는 ~를 붙인다
- 생성자에서 메모리를 할당했거나 어떤 자원을 생성했을 때 누군가가 이 자원을 정리 해야 한다
- 프레임워크에 의해 관리되지 않은 리소스를 할당했거나 가비지 컬렉터가 해제할 수 없는 자원을 사용했을때


 

Posted by 코딩하는 야구쟁이
,