Java 方法重载,方法重写(覆盖),继承等细节注意
1.方法重载(method overload)的具体规范
如果有两个方法的方法名相同,但参数不一致,那么可以说一个方法是另一个方法的重载。
备注:在不同包时继承public/protected级别的变量和方法。
方法继承的作用可以提高代码的重用性和安全性
3.Java中的不同包中的访问权限
1,public 2,protected 3,(default) 4,private
1任何类都可以访问
2在同一个包中的所有类可以访问,以及该类的子类
3同一个包中的所有类
4只能在本类中访问
- 子类的方法名称返回类型及参数签名 必须与父类的一致
- 子类方法不能缩小父类方法的访问权限
- 子类方法不能抛出比父类方法更多的异常
- 方法覆盖只存在于子类和父类之间,同一个类中只能重载
- 父类的静态方法不能被子类覆盖为非静态方法
- 子类可以定义于父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法(满足覆盖约束),
- 而且Java虚拟机把静态方法和所属的类绑定,而把实例方法和所属的实例绑定。
- 父类的非静态方法不能被子类覆盖为静态方法
- 父类的私有方法不能被子类覆盖
- 父类的抽象方法可以被子类通过两种途径覆盖(即实现和覆盖)
- 父类的非抽象方法可以被覆盖为抽象方法
- 父类的成员变量和方法为private使用super访问编译出错
- 在类的构造方法种,通过super语句调用这个类的父类的构造方法
- 在子类种访问父类的被屏蔽的方法和属性
- 只能在构造方法或实例方法内使用super关键字,而在静态方法和静态代码块内不能使用super
- 对于一个引用类型的变量,Java编译器按照它的声明的类型来处理
- 对于一个引用类型的变量,运行时Java虚拟机按照它的实际引用的对象来处理
- 运行时环境中,通过引用类型变量来访问所引用对象的方法和属性时,Java虚拟机采用以下绑定规则
上转型对象具有如下特点:
1)上转型对象不能操作子类新增的成员变量(失掉了这部分属性),不能使用子类新增的方法(失掉了一些功能).
2)上转型对象可以操作子类继承或隐藏的成员变量,也可以使用子类继承的或重写的方法.
3)上转型对象操作子类继承或重写的方法时,就时通知对应的子类对象去调用这些方法.因此,如果子类重写了父类的某个方法后,对象的上转型对象调用这个方法时,一定是调用了这个重写的方法.
4)可以讲对象的上转型对象再强制转换到一个子类的对象,这时,该子类对象又具备了子类的所有属性和功能.(也就是下溯)
第一个是通过方法重载实现;第二个是通过方法覆盖实现(子类覆盖父类方法)。
第一种就是我们调用方法是不用区分参数类型,程序会自动执行相应方法,如: 加法运算,可以使int相加,可以是double相加,都是同一个方法名。
第二种就是动态绑定,使用父类引用指向子类对象,再调用某一父类中的方法时,不同子类会表现出不同结果。 这样的作用就是扩展性极好,玩过网游的话应该知道 游戏中有不同的角色,它们都有一个父类,它们做相同动作时表现出来的效果就会不一样,比如跑,魔法师的跑跟战士的跑就不会一样,这就是俩者都覆盖了父类中的跑方法,各自有自己的现实,表现出来多态。 如果有一天你想再加个角色,只用再写一个类继承该父类,覆盖其中的跑方法就行了,其他代码不用怎么改,所以可维护性也很好。
- 集成数的层次不可太多
- 集成数的上层为抽象层
- 继承关系最大的弱点:打破封装
- 精心设计专门用于被继承的类