다형성 연습

UML - word

package : wordprocessorTest
class : WordUser

package : wordprocessor.word
class : Word

package : wordprocessor.format
class : Format
 AstaFormat
 EqulFormat
 SharpFormat


------


package wordprocessorTest;


import wordprocessor.format.AstaFormat;
import wordprocessor.format.Format;
import wordprocessor.format.SharpFormat;
import wordprocessor.word.Word;

public class WordUser {
 public static void main(String[] args) {
  Word word = new Word();
  Format f = new Format();
  AstaFormat af = new AstaFormat();
  SharpFormat sf = new SharpFormat();
  word.print("출력할 내용 :  Hello",f);
  word.print("출력할 내용 :  Hello",af);
  word.print("출력할 내용 :  Hello",sf);
 }
}


----------

package wordprocessor.word;

import wordprocessor.format.Format;
public class Word {
 public void print(String message, Format format){
  System.out.println(format.getFormat(message));
 }
}


----------

package wordprocessor.format;

public class Format {
 public String getFormat(String message){
  String str;
  str = "---------------------\n"+message+"\n---------------------";
  return str;
 }
}


----------

package wordprocessor.format;


public class AstaFormat extends Format{

 @Override
 public String getFormat(String message) {
  // TODO Auto-generated method stub
  return super.getFormat(message).replace('-','*');
 }
 
}


------------

package wordprocessor.format;

public class EqulFormat extends Format{

 @Override
 public String getFormat(String message) {
  // TODO Auto-generated method stub
  return super.getFormat(message).replace('-', '=');
 }
 

}


-------------

package wordprocessor.format;

public class SharpFormat extends Format{

 @Override
 public String getFormat(String message) {
  // TODO Auto-generated method stub
  return super.getFormat(message).replace('-', '#');
 }
 
}


-----------------------------------------------------------------------------------

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


* 2012-3-16

* 다형성 - 부모tyoe  변수 - 자식객체 (compile시점에 되는 경우는 상속인 경우 부모가 자식보다 더 큰 tyoe이면 다형성이 된다) , 실행시점에서는 부모의 객체와 자식의 객체가 둘다 생성되서 접근가능.
         -> 부모에 정의된 메소드만 호출가능.

- Super s = new Super();
   s.a();(o)자식에 있는 a()를 호출
 s.b();(x)자식에는 b()가 있지만 부모에 없어서 컴파일 시점에서 에러가 난다. 
        

Super              Sub
----- <-------     ------
a()                a()
                   b()

- 배열 Heterogeneous -> reference type의 배열.


* Super = new Super()           c : o
  Sub1 sub = (Sub1)s;           R : x


* Sub1 sub1 = new Sub1();           C : X   (컴파일시점)
  Sub2 sub2 = (Sub2)sub1;           R : X   (실행시점)

* Super s = new Super();            C : O
  Sub1 s1 = (Sub1)s;                R : O

 

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

인터페이스(interface)  (0) 2012.07.28
추상화(abstract)  (0) 2012.07.28
다형성(polymorephism)  (0) 2012.07.28
의존관계(dependency)  (0) 2012.07.28
final변수  (0) 2012.07.28
Posted by 조은성
,