다형성(Polumorphism)

자바 2020. 6. 20. 16:11

다형성

참조 변수를 통한 객체 접근

- 클래스로부터 객체를 생성하고 생성된 객체의 주소 값을 참조 변수에 넣어 줄 때 참조 변수의 타입에 따라 생성된 객체에 접근할 수 있는 영역은 달라진다

 

class 1 extends class2

 

메서드의 Overriding

Overriding

- 부모 클래스가 가지고 있는 메서드를 자식 클래스에서 다시 구현한 것을 가리킨다

 

- 메서드를 Overriding을 하고 부모 클래스의 메서드를 호출하고자 할 때는 super를 이용한다

 

참조 변수의 활용

- 부모 클래스형 참조 변수를 통해 객체에 접근하면 부모 클래스의 영역에 접근을 하지만 호출하려는 메서드가 Ovreriding 된 경우에는 자식 클래스에 재 정의한 메서드가 호출이 된다

 

PolyTest.java

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

Class c1 = new Class1( );

 

c1.superV1 = 100;

c1.superMethod( );

 

c1.class1V1 = 300;

c1.class1Method( );

 

c1.superMethod2( );

 

SuperClass super1 = new Class1( );

super1.superV1 = 200;

super1.superMethod( );

 

super1.superMethod2( );

}

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

 

SuperClass.java

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

public class SuperClass {

     

     int superV1;

 

     public SuperClass( ) {

          System.out.println("부모 클래스의 생성자");

     }

 

     public SuperClass(int a) {

          System.out.pirntln("부모 클래스의 생성자2 : a - " + a);

     }

 

     public void superMethod( ) {

          System.out.println("SuperClass의 메서드 - superV1 : " + superV1);

     ]

  

     public void superMethod2( ) {

          System.out.println("SuperClass의 메서드2");

     }

}

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

 

Class1.java

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

public class Class1 extends SuperClass {

      int class1V1;

 

      public Class1( ) {

           super(100);

           System.out.println("자식 클래스의 생성자");

      }

 

      public void class1Method( ) {

           System.out.println("Class1의 메서드 - class1V1 : " + classV1);

      }

 

      public void superMethod2( ) {

           System.out.pirntln("자식 클래스에서 Overriding한 메서드");

           super.superMethod2( );

      }

}

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

 

Console

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

부모 클래스의 생성자2 : a - 100

자식 클래스의 생성자

SuperClass의 메서드 - superV1 : 100

Class1의 메서드 - class1V1 : 300

자식 클래스에서 Overriding한 메서드

SuperClass의 메서드2

부모 클래스의 생성자2 : a - 100

자식 클래스의 생성자

SuperClass의 메서드 - superV1 : 200

자식 클래스에서 Overriding한 메서드

SuperClass의 메서드2

'자바' 카테고리의 다른 글

캡슐화(Encapsulation)  (0) 2020.06.22
접근제한자(public)  (0) 2020.06.21
상속(inheritance)  (0) 2020.06.17
생성자(constructor)  (0) 2020.06.16
args  (0) 2020.06.16
Posted by khon98
,