-
[JAVA] 오버라이딩 (overriding)JAVA 2023. 7. 16. 16:43
오버라이딩(overriding): '재정의','새롭게 정의한다'라는 뜻
오버라이딩(overriding)이 이뤄지기 위한 조건
- 메소드 이름 동일
- 메소드 매개변수의 개수와 데이터 타입, 순서 동일
- 메소드 반환 타입 동일
EX1) sum,avg 메소드 오버라이딩
class Calculator { int left,right; public Calculator(int left,int right){ //부모클래스의 생성자 this.left = left; this.right = right; } public void sum(){ //더하기 System.out.println(this.left + this.right); } public void avg(){ //평균 System.out.println((this.left+this.right)/2); } } class SubCalculator extends Calculator { //Calculator를 상속한 SubCalculator 클래스 public SubCalculator(int left,int right) { super(left,right); } public void sum(){ //오버라이딩 System.out.println("sum overriding :" + (this.left + this.right)); } public void avg(){ //오버라이딩 System.out.println("avg overriding :" + ((this.left+this.right)/2)); } public void sub(){ System.out.println(this.left - this.right); } } public class CalculatorDemo { public static void main(String[] args) throws Exception { SubCalculator c1 = new SubCalculator(20,10); c1.sum(); //오버라이딩된 결과로 출력됨 c1.avg(); c1.sub(); } }sum overriding :30
avg overriding :15
10super 키워드를 이용하면 부모 클래스의 메소드가 가진 기능을 그대로 가져다 쓰면서 동시에 하위 클래스에서 필요로 하는 기능을 하나의 메소드 안에 추가할 수 있다.
EX2) avg메소드 super 사용하여 오버라이딩
class Calculator { int left,right; public Calculator(int left,int right){ //부모클래스의 생성자 this.left = left; this.right = right; } public void sum(){ //더하기 System.out.println(this.left + this.right); } public int avg(){ //평균 return ((this.left+this.right)/2); } } class SubCalculator extends Calculator { //Calculator를 상속한 SubCalculator 클래스 public SubCalculator(int left,int right) { super(left,right); } public void sum(){ //오버라이딩 System.out.println("sum overriding :" + (this.left + this.right)); } public int avg(){ //오버라이딩, super 키워드사용 return super.avg(); } public void sub(){ System.out.println(this.left - this.right); } } public class CalculatorDemo { public static void main(String[] args) throws Exception { SubCalculator c1 = new SubCalculator(20,10); //c1.sum(); System.out.println("avg: " + c1.avg()); //c1.sub(); } }avg: 15
'JAVA' 카테고리의 다른 글
[JAVA] 오버라이딩(overriding)과 오버로딩(overloading) 차이점 (0) 2023.07.16 [JAVA] 오버로딩 (overloading) (0) 2023.07.16 [JAVA] 상속, 생성자, super (0) 2023.07.16 [JAVA] 상속 기본 예제 (0) 2023.07.16 [JAVA] 전역변수, 지역변수 (0) 2023.07.16