覆盖&重载

1、覆盖:

什么时候使用覆盖?(来电显示功能示例)

当对一个类进行子类的扩展时,子类需要保留父类的功能声明,但是要定义子类的特殊内容时,就使用覆盖操作完成

2、覆盖规范:

  • 子类的方法名称返回类型及参数签名 必须与父类的一致
  • 子类方法不能缩小父类方法的访问权限
  •  子类方法不能抛出比父类方法更多的异常
  • 方法覆盖只存在于子类和父类之间,同一个类中只能重载
  • 父类的静态方法不能被子类覆盖为非静态方法
  • 子类可以定义于父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法(满足覆盖约束),    
  • 而且Java虚拟机把静态方法和所属的类绑定,而把实例方法和所属的实例绑定。
  • 父类的非静态方法不能被子类覆盖为静态方法
  • 父类的私有方法不能被子类覆盖
  • 父类的抽象方法可以被子类通过两种途径覆盖(即实现和覆盖)
  • 父类的非抽象方法可以被覆盖为抽象方法

3、Java中的不同包中的访问权限:

1,public 2,protected 3,(default) 4,private
1任何类都可以访问
2在同一个包中的所有类可以访问,以及该类的子类
3同一个包中的所有类
4只能在本类中访问

4、子父类中构造函数的特点。

在子类构造对象时,访问子类构造函数时,父类也运行了。

原因是:在子类的构造函数中第一行有一个默认的隐式语句。super(),调用的是父类中空参数的构造函数。

 

posted @ 2018-08-06 21:25  Angche  阅读(284)  评论(0编辑  收藏  举报