覆盖&重载
1、覆盖:
什么时候使用覆盖?(来电显示功能示例)
当对一个类进行子类的扩展时,子类需要保留父类的功能声明,但是要定义子类的特殊内容时,就使用覆盖操作完成
2、覆盖规范:
- 子类的方法名称返回类型及参数签名 必须与父类的一致
- 子类方法不能缩小父类方法的访问权限
- 子类方法不能抛出比父类方法更多的异常
- 方法覆盖只存在于子类和父类之间,同一个类中只能重载
- 父类的静态方法不能被子类覆盖为非静态方法
- 子类可以定义于父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法(满足覆盖约束),
- 而且Java虚拟机把静态方法和所属的类绑定,而把实例方法和所属的实例绑定。
- 父类的非静态方法不能被子类覆盖为静态方法
- 父类的私有方法不能被子类覆盖
- 父类的抽象方法可以被子类通过两种途径覆盖(即实现和覆盖)
- 父类的非抽象方法可以被覆盖为抽象方法
3、Java中的不同包中的访问权限:
1,public 2,protected 3,(default) 4,private
1任何类都可以访问
2在同一个包中的所有类可以访问,以及该类的子类
3同一个包中的所有类
4只能在本类中访问
4、子父类中构造函数的特点。
在子类构造对象时,访问子类构造函数时,父类也运行了。
原因是:在子类的构造函数中第一行有一个默认的隐式语句。super(),调用的是父类中空参数的构造函数。