Java中具有继承的同一对象中具有相同标识的两个不同变量
我试图学习Java的继承,但被这个例子弄糊涂了,因为在同一个对象实例中似乎存在两个不同的speedlimit变量。一个来自超级类,一个来自子类。仍然只有一个对象,一个Honda3对象(由自行车引用引用)。这是什么原因?有两个不同的实例变量吗Java中具有继承的同一对象中具有相同标识的两个不同变量,java,inheritance,member,Java,Inheritance,Member,我试图学习Java的继承,但被这个例子弄糊涂了,因为在同一个对象实例中似乎存在两个不同的speedlimit变量。一个来自超级类,一个来自子类。仍然只有一个对象,一个Honda3对象(由自行车引用引用)。这是什么原因?有两个不同的实例变量吗 class Bike { int speedlimit=92; public void showSpeedLimit() { System.out.println("From Bike: SL= "+ this.speedlimi
class Bike
{
int speedlimit=92;
public void showSpeedLimit()
{ System.out.println("From Bike: SL= "+ this.speedlimit); }
public void SetSpeedLimit(int limit)
{ this.speedlimit=limit;}
}
class Honda3 extends Bike
{
int speedlimit=150;
public void showSpeedLimit()
{ System.out.println("From Honda3: SL= "+ this.speedlimit); }
public void SetSpeedLimit(int limit)
{ this.speedlimit=limit; }
}
public class main2
{
public static void main(String args[])
{
Bike obj;//reference to Bike object
obj=new Honda3();// Honda3 object created and assigned to the reference variable named obj
System.out.println(obj.speedlimit);//90 Data member not overridden
obj.showSpeedLimit();//150 showing Honda3;
obj.speedlimit+=3;//95 Bike
System.out.println(obj.speedlimit);//95
obj.showSpeedLimit();//still 150
obj.SetSpeedLimit(155);// setting Honda3 object speedlimit to 155
System.out.println(obj.speedlimit);// still 95
obj.showSpeedLimit();//155
}
}
输出:
92
从Honda3:SL=150,
95,
从Honda3:SL=150,
95,
从Honda3开始:SL=155**
showSpeedlimit
方法时,它会按预期工作,因为该方法已被重写李>
showSpeedlimit
方法时,它会按预期工作,因为该方法已被重写李>
在Java中,您可以在子类中重写父类的方法。这是调用方法重写。不能重写类的属性。在本例中,有两个实例变量,一个来自基类,另一个来自父类。只创建一个对象
Bike obj;//reference to Bike object
obj=new Honda3();// Honda3 object created and assigned to the reference variable named obj
System.out.println(obj.speedlimit);//90 Base class attribute value is printed
obj.speedlimit+=3;//95 Bike Base Class attribute value is updated
System.out.println(obj.speedlimit);//95
obj.SetSpeedLimit(155);// Child class attribute value is updated speedlimit to 155
在Java中,您可以在子类中重写父类的方法。这是调用方法重写。不能重写类的属性。在本例中,有两个实例变量,一个来自基类,另一个来自父类。只创建一个对象
Bike obj;//reference to Bike object
obj=new Honda3();// Honda3 object created and assigned to the reference variable named obj
System.out.println(obj.speedlimit);//90 Base class attribute value is printed
obj.speedlimit+=3;//95 Bike Base Class attribute value is updated
System.out.println(obj.speedlimit);//95
obj.SetSpeedLimit(155);// Child class attribute value is updated speedlimit to 155
int speedlimit=150
为类声明了第二个成员变量Honda3
是否有两个不同的实例变量?:是:一个在基类中,一个在子类中:int speedlimit=92代码>和int speedlimit=150
int speedlimit=150
为类声明了第二个成员变量Honda3
是否有两个不同的实例变量?:是:一个在基类中,一个在子类中:int speedlimit=92代码>和int speedlimit=150代码>@Grandalfion如果能解决您的问题,请接受答案。@Grandalfion如果能解决您的问题,请接受答案。