본문 바로가기

Java/Java_OOP 4(object_oriented Programming)

Java_OOP 4( object_oriented Programming ) 객체지향적 프로그래밍

반응형

1. 다형성(polymorphism)

 * 다형성 

  - '여러 가지 형태를 가질 수 있는 능력'의미

  - 한 타입의 차조변수로 여러 타입의 객체를 참조할 수 있다.

  - 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를참조할 수 있다.

  - 타입이 같은 인스턴스는 참조변수의 타입에 따라 사용할 수 있는 멤버의 개수가 달라진다.

  - 조상 인스턴스의 멤버 개수는 자손 인스턴스의 멤버 개수보다 항상 적거나 같다.

  - 조상 타입의 참조변수로 자손타입은 인스턴스를 참조할수 있다.

  - 반대) 자손 타입의 참조변수로 조상타입의 인스턴스를 참조할 수 X

 

 * 참조변수 형변환

  - 자손타입  --> 조상타입     (Up-casting)            : 형변환 생략가능

  - 자손타입  <-- 조상타입     (Down-casting)        : 형변환 생략불가

 

  - Object 타입의 참조변수로 형변환 하는 것은 참조변수가 다룰 수 있는 멤버의 개수가 실제 인스턴스가 갖고 있는 멤버의 개수보다 적을 것이 분명하므로 문제가 되지 X  

  - 형변환은 참조변수의 타입을 변환하는 것이지 인스턴스를 변환하는것이 아니기 때문에 참조변수의 형변환은 인스턴스에 아무런 영향이 X

  - 참조하고 있는 인스턴스에서 사용할 수 있는 멤버의 범위(개수)를 조절한다.

  - 참조변수를 가리키는 인스턴스의 자손타입으로 형변환은 허용되지 X

  - 참조변수가 가리키는 인스턴스의 타입이 무엇인지 중요!!!!!!

 

 * instanceof 연산자

  - 어떤 타입에 대한 instanceof연산의 결과가 true라는 것은 검사한 타입으로 형변환이 가능하다는 뜻

  

 * 참조변수와 인스턴스의 연결

  - static메서드는 static변수처럼 참조변수의 타입에 영향을 받는다.

  - 참조변수의 타입에 영향을 받지않는 것은 인스턴스메서드 뿐이다.

  - static메서드는 반드시 참조변수가 아닌 '클레스.메서드()'로 호출

 

 

  2. 추상클레스(abstract class)

 * 추상클레스  

  - '미완성 설계도'  완성되지 못한 설계도

  - 미완성 메서드(추상메서드)를 포함

  - 인스턴스를 생성 X

  - 상속을 통해서 자손클래스에 의해서만 완성될 수 있다.

     abstract class 클래스이름 { ... }

  - 추상메서드를 포함하고 있지 않은 클래스에도 'abstract'를 붙여서 추상클래스로 지정

  - 추상메서드가 없는 완성된 클래스라도 추상클래스로 지정되면 클래스의 인스턴스를 생성할 수 X

 

 * 추상메서드(abstract method)

  - 선언부와 구현부로 구성

  - 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨둔것

  - 설계만 해 놓고 실제 수행될 내용은 작성하지 않은 것

    abstract   리턴타입  메서드이름();

 * 추상클래스의 작성

  - 여러 클래스에 공통적으로 사용될 수 있는 클래스를 바로 작성하기도 하고, 기존의 클래스의 공통적인 부분을 뽑아서 추상클래스로 만들어 상속하는 경우도 있다. 

  - 클래스의 공통 부분을 뽑아서 조상클래스를 만드는 것

  

  상속계층도를 따라 내려 갈수록 세분화 되며, 올라갈수록 공통요소만 남게 된다.

 

추상화 - 클래스간의 공통점을 찾아내서 공통의 조상을 만드는 작업

구체화 - 상속을 통해 클래스를 구현, 확장하는 작업

 

 

반응형