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