java中super可以重新父类么_Java Super 覆盖方法

子类从父类中继承方法,有时候,子类需要修改父类中定义的方法的实现,这称作方法覆盖。

比如,GeometricObject类中的toString方法返回表示集合对象的字符串,这个方法就可以被覆盖,返回表示圆的字符串。

1 publicString toString(){

2   return super.toString()+"\nradius is "+radius;

3 }

要在Circle类中调用定义在GeometricObject中的toString方法,使用super.toString()。

需要注意的是:

1、仅当实例方法是可访问时,它才能被覆盖。因为私有方法不能在它的类之外被访问。如果子类中定义的方法在父类中是私有的,那么这两个类完全没有关系。

2、静态方法能被继承,但是不能被覆盖。如果父类中定义的静态方法在子类中被重新定义,那么定义在父类中的静态方法将被隐藏,使用 父类名.静态方法名 调用隐藏的静态方法。

另外,说一下Object类中equals的方法的默认实现和覆盖方法:

1 public booleanequals(Object obj){2 return (this==obj);3 }

这个方法使用==运算符检测两个引用变量是否指向同一个对象,因此,应该在自己的客户类中覆盖这个方法,以测试两个不同的对象是否具有相同的内容。比如基于元的半径比较两个圆是否相等,如下所示:

1 public booleanequals(Object obj){2 if(obj instanceofCircle){3 return radius==((Circle)obj).radius;4 }5 else

6 return false;7 }

这时,需要注意的是,覆盖equals方法时,必须使用equals(Object obj)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值