Java

Java, Override의 정의 / Overload와 차이 / Annotation / 다형성이란

greenyellow-s 2024. 7. 16. 16:17
Override

 

슈퍼 클래스로 부터 상속받은 메소드의 내용을 재정의 하는 것이다.

 

Override는 메소드에만 적용이 되고 변수에는 적용되지 않는다.

 

Overload와 Override의 차이

 

Overload쌍둥이 형태로, 하나의 클래스 안에서 메소드명이 같은 것을 얘기한다.

Override상속관계에서 부모와 자식 두 클래스에 같은 메소드명을 가진 메소드가 있는 것을 얘기한다.

 

Overload메소드명은 같지만 인수의 개수 혹은 인수 형이 달라야 하는데

Override메소드명 뿐만 아니라 인수의 개수, 인수 형 모두 같아야한다.

 

단, Override 접근 제어자(Modifier)는 틀려도 되지만 반드시 자식 클래스가 더 커야한다.

private < default < protected < public

 

class Super{
          protected void disp(int a)
}
class Sub extends Super{
          public void disp(int a)
}


Annotation

 

@Override

override가 맞는지 아닌지 체크하는 명령어
바로 아래에 있는거만 적용된다.

 

 


자식 - ChildMain.class / 부모 - Super.class

 

자식 클래스에 있는 disp() 호출

1.

ChildMain aa = new ChildMain("홀길동", 27, 65, 169);

aa.disp();

2.

Super bb = new ChildMain("코난", 24, 55, 165);  // 자식 클래스를 참조한다.

bb.disp();

 

부모 클래스에 있는 disp() 호출

1.

Super bb = new Super(55,165);

bb.disp();

2.

super.disp();

첫번째 줄에 써야한다.

 

 

 


다형성

 

한 타입의 참조 변수를 통해 여러 타입의 객체를 참조할 수 있도록 하는 것이다. 

 

부모가 자식 클래스를 참조할 수 있다. 하지만 자식은 부모꺼를 참조할 수 없다.

 

AA -> 부모 / BB -> 자식

// 다형성

AA bb = new BB();

 

BB cc = bb; X
BB cc = (BB)bb; O // 형변환(casting)을 해주어야 한다.

 

BB cc = (BB) bb;
cc.disp();

 

[ 조건 ]

1. 상위 클래스와 하위 클래스는 상속관계이다.

2. Override가 반드시 필요하다.

3. 자식 클래스의 객체가 부모 클래스의 타입으로 형변환 해야한다.