Java 为什么值函数getX()和getY()是printinf';0';创建驱动类OBJ后
在我的代码中,除了主类之外还有3个类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."
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
保留为零