[선언방법]
접근제한자[abstract] class user_name{
    멤버 (필드, 변수, 메소드)
}

생성자
1. 클래스이름과 동일하되 반환형 (return type)은 없다.
    ex) public class Test{
            public Test(){}  // 괄호안에 매개인자가 없으면 default 생성자
       }

2. overload 할 수 있다.
    ex) public class Test{
           public Test(){}  // 괄호안에 매개인자가 없으면 default 생성자
           public Test(int a, int b){}
           public Test(int a, double b){}
        }

3. 접근제한자를 이용하여 접근을 제한할 수 있다.

4. 객체를 생성할 때 자동으로 한 번만 호출된다. 메소드처럼 객체 주소번지로 명시호출 할 수 없다.
    Test t1 = new Test();
    Test t1 = new Test(10, 20); ==> X

    Test t1 = new Test();
    t1 = new Test(10, 20); ==> O

5. 생성자는 상속되지 않는다.

6. this() 형식으로 생성자간의 내부호출이 가능하다.
    ex) public class Test{
            private int a, b;
            public Test(){
               this(10, 20);
               this.a = 10;
                this.b = 20;
            }  // 이 멤버변수의 초기화 작업을 하고 있음
           public Test(int a, int b){
               this.a = a;
               this.b = b;
           }
    }
Test t1 = new Test(); // 멤버변수를 0으로 초기화 해놓고, 현재 오브젝트주소로 멤버변수값을 변경
// 내부호출할때 멤버변수를 0으로 초기화 하면서 현재 오브젝트주소로 멤버변수값을 변경
Test t2 = new Test( 10, 20 );

7. 생성자는 멤버변수를 초기화 하는 목적을 가진다. 

8. 모든 클래스는 반드시 생성자를 가지며 생성자를 명시하지 않을 때는 기본 생성자가 제공되어 호출되고 명시하게 되면 명시된 생성자가 호출된다.

 

============================================================================

자바의 상속
1. 자바는 클래스 간의 단일 상속을 원칙으로 한다.

2. this, super로 후손과 선조의 주소를 참조한다.

3. this(), super()로 후손과 선조의 생성자를 호출할 수 있다.

4. 생성자는 상속되지 않는다.

5. 접근제한자를 이용해서 선조는 후손에게 호출할 수 있는 접근을 제한할 수 있고
   abstract 키워드를 이용해서 강제적인 상속과 재정의를 할 수 있다.
   
6. 클래스 선언부에 final 이라고 명시되면 상속할 수 없다.

7. 객체의 생성 순서는 후손을 통해서 생성될 때 선조가 먼저 생성되고 후손이 나중에 생성된다.
   소멸은 역순으로 자동소멸이다.
   
8. 상속은 두 가지로 나뉜다. 클래스 간의 상속(단일), Interface(다중)=추상화 간의 상속이 있다. 

 

+ Recent posts