java中的重写与常量

重写发生于类的继承,当子类覆盖了父类的相同签名的方法(即方法名和参数列表相同)就产生了重写。

实例如下

class Coo{void f(){System.out.println("父类之f");}}class Doo extends Coo{@Overridevoid f() {// TODO Auto-generated method stubSystem.out.println("子类之f");}}

c类中有f()方法,d类中也有f()方法,且参数列表相同,此时d.f()就覆盖了c.f()。当Main方法中,输入下列代码

Coo c=new Doo();c.f();

控制台结果为子类之f,这是因为重写方法在调用时,进行的是编译绑定,决定使用子类还是父类f()方法的是引用指向的对象而不是引用的类型.

重写除了满足签名必须相同之外还需满足一下三点

1.当方法的返回值类型是引用类型时,子类方法的返回值必须是父类方法的子类或同类

 

class Sup{}class Sub extends Sup{}class A{public sub say(){return null;}}class B extends A{public Sup say(){ return null;}}

此时编译器会在B中重写的say方法处报错

 

2.子类方法的访问修饰符范围必须大于等于父类的访问修饰符范围

 

class Sup{}class Sub extends Sup{}class A{protected void show(){}}class B extends A{void show(){}}

 

同样编译器会在B类中的show()方法处报错

 

3.子类方法抛出的异常必须是父类方法抛出异常的子异常

class A{void show ()throws ArithmeticException{}}class B extends A{void show()throws Exception{}}

 

 

java中的常量

java中常量由static final修饰的类型就是常量 在程序编译阶段会将其替换为常量

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值