본문 바로가기

프로그래밍/Java

상속,다형성,static,final, abstract

■ 상속(Inheritance)
 : superclass의 멤버변수와 메소드를 subclass에 상속
 규칙 : 상속을 받는 subclass에서 상속받을 것을 표시
  [modifer] class ClassName [extends  SuperClassName]{
    //상속 받을 변수, 메소드 외에 필요한 것을 선언
  }
 - 자바는 다중상속을 지원하지 않고 오직 하나의 클래스로 부터만 상속 받을수 있다.
 - 메소드 오버라이딩
   :상속받은 메소드의 구현내용이 조금 다를경우 상속 받은 메소드를 무시하고
    다시 정의할 수 있다.
    ▲ 규칙: 메소드 이름, 리턴타입, 인자가 같아야 한다.
    ▲ 오버라이드 하는 이유 : 이름이 다른 메소드를 새로 선언하지 않고 상속 받은 메소드
    이름과 같이 다시 선언 하는 이유는 전체적인 기능은 같지만 구현내용이 조금 다른 경우
    사용자의 편의성을 높이기 위해 같은 이름으로 선언한다.
 - super : SuperClass를 지시하는 지시자로 SuperClass의 생성자를 호출하거나
   오버라이드에 의해 무시된 메소드를 호출 할 때 사용된다.
    ▲ Super Class 생성자 호출
       - Sub class의 생성자의 첫번째 라인에서만 호출할수 있다.
          super([argument-list]);
       - 만약 SuperClass에서 기본생성자가 없다면 상속 받는 subClass의 생성자에서는
          인자가 있는 SuperClass의 생성자를 호출하지 않으면 컴파일 에러 발생
    ▲ 무시된 메소드 호출하기
        super.methodName([argument-list]);
■ final : modifier종류로서 클래스, 메소드, 변수에 사용 가능
   - 변수 : 상수가 됨=> 변수 선언시 값을 초기화 하고 그 이후 값 변경 불가
   - 메소드 : override가 안됨
   - 클래스 : 상속 불가
■ abstract : 추상화
  -메소드 : 메소드를 구현하기에는 너무 추상적이어서 구현할 수 없을 경우
         sub클래스에게 메소드를 구현하게 하는 기능
  => 강제 overried 기능
  => 클래스에 abstract메소드가 있으면 클래스도 abstract으로 선언해야한다.
  -클래스 : 클래스 내용이 너무 추상적이어서 객체를 생성해서 사용할수 없어
             객체 생성하지 못하게 한다.
■ static : 정적화
   => JVM은 동적으로 클래스를 로딩하고 동적으로 객체를 생성해서 바인딩한다.
   그러나 static으로 선언하면 클래스 로딩시 메모리에 로딩되어 객체 생성 없이
   사용할 수 있다.
  - 멤버변수 : 객체들의 공유 변수
  - method : 객체 생성없이 메소드 호출
  - 클래스 : 기본 top클래스에서는 선언할 수 없고 nested클래스에서는 선언 할 수 있다.
  - 객체 생성 없이 사용할 때
     ClassName.method([argument-list])
     ClassName.variableName
■ Polymorphism(다형성)
:  상속관계에서 Super 타입의 변수가 sub클래스의 객체를 참조 한다.
Ex)
  Employee e1 = new Employee();
  e1 = new Engineer();
  e1 = new Manager();
  Engineer en1 = new Employee();  =>(x)
  Engineer en2 = new Manager();   =>(x)
  Engineer en3 = new Engineer();
  e1 = en3;     =>(o)   => upcasting
반응형

'프로그래밍 > Java' 카테고리의 다른 글

deprecated API  (0) 2009.01.29
오버로딩, 캡슐화,bean  (0) 2009.01.21
생성자와 this  (0) 2009.01.21
object와 클래스  (0) 2009.01.21
자바의 연산자와 배열  (0) 2009.01.21