자바 상속 및 this에 관하여 질문드립니다.

자바 상속 및 this에 관하여 질문드립니다.

작성일 2024.04.16댓글 1건
    게시물 수정 , 삭제는 로그인 필요

public class Main {
public static void main(String[] args) {
A b = new B();
b.draw();
}
}

class A {
int a = 10;

public void draw() {
System.out.println(this);
System.out.println(this.a);
this.draw();
}
}

class B extends A {
int a = 20;
public void draw() {
System.out.println("=========== 자식 클래스 ===========");
System.out.println(this);
System.out.println(this.a);

System.out.println("=========== 부모 클래스 ===========");
super.draw();
}
}

결과
=========== 자식 클래스 ===========B@1b6d358620=========== 부모 클래스 ===========B@1b6d358610

안녕하새요 자바 상속 및 this에 관하여 질문드립니다.

B가 A를 상속 받고 있습니다.
this가 현재 생성 객체의 주소로 알고 있는데요!
그래서 this의 주소를 출력해보면 부모, 자식 예상한대로 B의 주소가 노출되고 있습니다.

여기서 this.a는 왜 서로 다른 값이 노출되고 부모에서 작성한 this.draw()를 오버라이딩을
진행한 자식의 draw()로 호출되는지 잘 이해가 가지 않습니다.

고수님들의 설명 부탁드립니다 ㅠㅠㅠ
감사합니다.


#자바 상속 #자바 상속 예제 #자바 상속 생성자 #자바 상속 오버라이딩 #자바 상속관계 #자바 상속 super #자바 상속 오버라이딩 예제 #자바 상속 다형성 #자바 상속 생성자 호출 순서 #자바 상속 문제

profile_image 익명 작성일 -

안녕하세요.

첫번째로, B클래스는 A클래스를 상속받습니다.

그말은 A클래스의 a변수를 상속받고 B클래스에는 새로운 a변수를 만들게 됩니다.

두 a는 구분이 되지 않으므로 상속받은 a는 super.a 라고 가리키고, 현재 a는 생략하거나 this.a 라고 가리키게 됩니다.

메소드의 경우 A클래스의 draw()메소드를 상속받습니다. 그런데 B클래스에서 draw()라는 메소드를 새로 정의하고 있습니다.

기존에 있는 메소드를 똑같이 내용만 다시 만드는것을 오버라이딩이라고 하는데, 이는 내부적으로, 상속받은 메소드가 아니라 오버라이딩 된 메소드를 호출하도록 되어있습니다.

즉, B클래스의 객체를 만들고, A클래스 타입의 참조변수로 호출을 하더라도, A클래스에 정의된 메소드가 아니라 B클래스에 정의된 메소드가 호출되도록 되어있습니다.

이는 다형성의 특징중 하나입니다.

이로인해 얻게 되는 이점이 많기 때문에 이렇게 작동되도록 만들어진것이기 때문에 이렇게 이해하시면 됩니다.

자바 상속 질문드립니다

A 속성변수x,y선언 a () {} a(x,y){ this.x=x this.y=y } _______________________ B extends A 속성변수... 상속이라는것은 부모의 멤버변수 메소드를 받아오는것을 이야기 합니다....

자바 질문드립니다

... //생성자 public Person(String name){ this.name... { //Person 상속받음 private double gpa; //학생... // 정의 구현한 인터페이스 메소드 사용...

자바 관련 질문드립니다...

기본적인 자바 프로그래밍 관련 질문입니다.. 답변 부탁드립니다... 1. static variable 은 무엇입니까? 2.... protected => 선언되면 패키지 내부, 상속 받은...

[자바]쉬운 문제들 질문드립니다

... 예약어 super와 this 의 차이에 대하여 쓰시오. 4.... 상속을 받지 못하게 제한하는 방법을 쓰시오. *문제가 좀 많습니다 자바에 대하여 공부하고 있는데 위에...

자바 질문 내공80

... 해석좀부탁드립니다 Calculator가... 클래스도 상속받고 있습니다. 따라서 run 메소드를... 이해하면 자바로 개발 설계하는 것이 정말...