子类中变量隐藏

子类中既有变量的隐藏也有方法的覆盖
class basePoint{
int x=0;
int y=0;
void move(int dx,int dy){
x+=dx;
y+=dy;
}
int getX(){
return x;
}
int getY(){
return y;
}
}
class realPoint extends basePoint{
float x=0.0f;
float y=0.0f;
void move(int dx,int dy){
move((float)dx,(float)dy);
}
void move(float dx,float dy){
x+=dx;
y+=dy;
}
int getX(){
return (int) Math.floor(x);
}
int getY(){
return (int)Math.floor(y);
}
}
public class showDiffer{
public static void main(String[] args){
realPoint rp=new realPoint();
basePoint bp=rp;
rp.move(1.7f, 4.7f);
bp.move(1, -1);
show(bp.x,bp.y);
show(rp.x,rp.y);
show(rp.getX(),rp.getY());
show(bp.getX(),bp.getY());
}
static void show(int x,int y){
System.out.println("("+x+","+y+")");
}
static void show(float x,float y){
System.out.println("("+x+","+y+")");
}

}
1 父类和子类都有getX()和getY()方法,它们各自返回的是各类中x和y的值
2 前面连续的rp.move和bp.move调用的都是子类的方法,所以修改的是子类的变量值。
3 输出bp.x金额bp.y的时候,虽然bp指向一个子类对象,但它在声明的时候是一个父类的变量,而[color=red]变量没有运行时多态的特性[/color]所以在编译时会根据p的类型决定引用父类的变量
(0,0)
(2.7,3.6999998)
(2,3)
(2,3)
成员在被子类重写时,变量被称为隐藏,而方法被称为覆盖
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值