Java 为什么值函数getX()和getY()是printinf';0';创建驱动类OBJ后

Java 为什么值函数getX()和getY()是printinf';0';创建驱动类OBJ后,java,Java,在我的代码中,除了主类之外还有3个类 基地 衍生 驱动 Base由派生的, 派生的由DDerived继承 所以, 当我调用派生类函数(getY)和基类函数(getX)时,它只打印设置的值,但当我创建驱动类对象并调用getX()&getY()时,它打印为零,尽管我将值设置为5&10 包C10_继承 class Base{ int x; Base(){ System.out.println("I am Base class Constructor."

在我的代码中,除了主类之外还有3个类

  • 基地
  • 衍生
  • 驱动
  • Base由派生的, 派生的由DDerived继承

    所以, 当我调用派生类函数(getY)和基类函数(getX)时,它只打印设置的值,但当我创建驱动类对象并调用getX()&getY()时,它打印为零,尽管我将值设置为5&10

    包C10_继承

    class Base{
        int x;
        Base(){
            System.out.println("I am Base class Constructor.");
        }
        Base(int x){
            System.out.println("I am Base class Overloaded Constructor with value(integer) : " + x);
        }
        public void setX(int x) {
            this.x = x;
        }
        public void getX() {
            System.out.println("X : "+x);
        }
    }
    
    class Derived extends Base{
    
        int y;
        Derived()   {
            super(5);
            System.out.println("I am Derived class Constructor.");
        }
        Derived(int x,int y){
            super(10);
            System.out.println("I am Derived class Overloaded Constructor with value(int,int) : "+x+" "+y);
        }
        public void setY(int y) {
            this.y = y;
        }
        public void getY() {
            System.out.println("Y : "+y);
        }
        
    }
    
        class DDerived extends Derived{
        DDerived() {
            System.out.println("I am Derived class Constructor from another Derived class");
        }
        DDerived(int x,int y,int z){
            super(x,y);
            System.out.println("I am Derived of Derived class Overloaded Constructor with value(int,int,int) : "+x+" "+y+" "+z);
        }
    }
    
    public class P38_Constructor {
    
        public static void main(String[] args) {
            Derived d = new Derived(5,10);
            d.setX(5);
            d.setY(10);
            d.getX();
            d.getY();
            DDerived dd = new DDerived(1,2,3);
            dd.getX();
            dd.getY();
        }
    
    }
    
    “当我创建Ddrive类对象并调用getX()&getY()时,虽然我将值设置为5&10,但它打印为零。”

    不,您没有将
    dd
    中的值设置为任何值,因此它们显示为零

    构造函数不设置字段
    x
    y
    。如果您希望他们这样做,您必须将行
    this.x=x
    添加到
    Base
    构造函数中,并将
    this.y=y
    添加到
    派生的
    构造函数中

    setter方法
    setX
    setY
    x
    y
    设置值。创建一个
    派生的
    对象,使用
    setX
    setY
    设置
    x
    y
    的值,然后将它们打印出来。但是,当您将
    dd
    创建为新的
    d驱动的
    对象时,您不会在
    dd
    上调用
    setX
    setY
    ,因此
    x
    y
    保留为零

    “当我创建Ddrive类对象并调用getX()&getY()时,虽然我将值设置为5&10,但它打印为零。”

    不,您没有将
    dd
    中的值设置为任何值,因此它们显示为零

    构造函数不设置字段
    x
    y
    。如果您希望他们这样做,您必须将行
    this.x=x
    添加到
    Base
    构造函数中,并将
    this.y=y
    添加到
    派生的
    构造函数中

    setter方法
    setX
    setY
    x
    y
    设置值。创建一个
    派生的
    对象,使用
    setX
    setY
    设置
    x
    y
    的值,然后将它们打印出来。但是,当您将
    dd
    创建为新的
    d驱动的
    对象时,您不会在
    dd
    上调用
    setX
    setY
    ,因此
    x
    y
    保留为零