-
자바의 정석 (this, super)의 이해Java/자바의정석 2023. 2. 20. 15:15반응형
package Chap07; public class Ex7_4 { public static void main(String[] args) { Point3D p = new Point3D(1, 2, 3); System.out.println("x=" + p.x + ",y=" + p.y + ",z=" + p.z); } } class Point { int x, y; Point(int x, int y) { this.x = x; this.y = y; } } class Point3D extends Point { int z; Point3D(int x, int y, int z) { super(x, y); // Point(int x, int y)를 호출 this.z = z; } }
===========실행결과============
x=1,y=2,z=3
class Point { int x, y; Point(int x, int y) { this.x = x; this.y = y; } }
Point클래스에서 인스턴스변수로 x,y가 선언되어있다.
그리고 지역변수 x,y를 매개변수로 하는 Point(int x, int y) 메소드가 선언되어있다.
ths.x = x;
this.y = y;
이전에 보았듯이 this.x는 현재 클래스의 인스턴스변수를 가르킵니다
this.x (인스턴스 변수 x) = x (지역변수 x)
class Point3D extends Point { int z; Point3D(int x, int y, int z) { super(x, y); // Point(int x, int y)를 호출 this.z = z; } }
Point를 부모로하는 Point3D자식 클래스가 있다.
Point3D의 필드에는 인스턴스 변수 z가 선언되어있고
Poin3D(int x, int y, int z) {} 에서는 x,y,z각 지역변수를 선언하였다.
super(x,y)를 호출하게된다면 Point3D의 부모Point클래스의 Point(int x, int y)를 호출한다.
Point3D p = new Point3D(1, 2, 3); System.out.println("x=" + p.x + ",y=" + p.y + ",z=" + p.z);
main에서 참조변수 p로 Point3D(1,2,3) 생서자를 호출하였으므로
Point3D(int x, int y, int z) { super(x, y); // Point(int x, int y)를 호출 this.z = z; }
해당 메소드가 실행된다.
반응형'Java > 자바의정석' 카테고리의 다른 글
자바의정석 Ex7_10 추상 클래스, 추상 메서드 (0) 2023.02.21 자바의 정석 Ex7_9 (하나의 배열에 여러종류의 객체 저장) (0) 2023.02.20 자바의정석 Ex7_7(다형성) (0) 2023.02.20 자바의 정석 Ex7_2 (this, super) (0) 2023.02.20 자바의 정석 Ex7_1 (클래스 초기화, 인스턴스 초기화) (0) 2023.02.20