javaSE学习笔记6 重写
来源:互联网 发布:淘宝突然没有生意 编辑:程序博客网 时间:2024/06/04 18:40
java中的子类是不能获得父类的构造器的
java中子类重写(也叫覆盖Overrider)父类的方法:子类继承了父类,但是父类的方法不太适合子类,所以子类可以重写父类的方法。重写遵循“两同两小一大”规则:两同就是方法名、形参列表相同,两小就是子类的返回值必须比父类的相等或者比父类的小。子类方法声明抛出的异常应该比父类的更小或者相等。一大是指子类方法的访问权限应该比父类的方法的访问权限更大。
重写还有很重要的一点:父类的方法若是static型的,子类的也必须是static型的。子类重写了父类的方法以后,若在子类中想要调用父类中的方法,可以采用super(被覆盖的是实例方法,即没有加static的方法),或采用类名.方法名(被覆盖的方法是类方法,加static的方法)来调用父类中被覆盖的方法。
super是直接父类对象的默认引用。
public class Base{public static void text(){}}public class Derived extends Base{//这样重写是错误的,父类的方法是static型的,//子类的也必须一样public void text(){}}
重写:若父类中的方法是private型的,那么它对子类是不可见的,也就是不能被重写。子类中定义了跟父类中方法名、参数列表一样的函数那属于定义一个新函数。
当java中创建一个类的对象时,系统会隐式创建该类的父类对象。只要有一个子类的对象存在,则一定存在一个与之对应的父类的对象。所以在子类中使用super引用时,super总是指向调用该方法的子类对象所对应的父类对象。
this和super都不能出现在static方法中原因:static修饰的方法是属于类的,该方法的调用只可能是一个类,而不是对象,那么这样就不存在对应的父类对象或当前对象了,所以使用super或this引用也就失去意义。
如果子类中没有覆盖父类中的属性,而在子类中要调用父类中的属性,则可以省略super关键字。系统会按照以下顺序查询:
1、查看当前方法中是否有定义这个属性。
2、查看当前子类中是否有定义这个属性。
3、查看这个类的父类中是否有这个属性,依次上溯,直到找到Object类,若Object中没有,那么就会报错。
java中的子类不会获得父类的构造器。使用super调用父类的构造器必须出现在第一行。当调用子类构造器来初始化子类对象时,父类构造器总会在子类构造器之前执行。执行父类构造器时,其父类的父类也会先构造,也就是说,创建任何java对象,java.lang.Object的构造器总是最先被执行的。
- javaSE学习笔记6 重写
- JavaSE 学习参考:方法重写
- JavaSE 学习参考:方法重写
- 【JavaSE学习笔记】面向对象_继承_方法重写、final关键字
- JAVASE学习笔记第6天
- JavaSE学习笔记(2016.4.6)
- JavaSE学习笔记--反射
- JavaSE学习笔记--泛型
- JavaSE学习笔记--内省
- javaSE学习笔记
- JAVASE学习笔记一
- JAVASE学习笔记二
- javaSE学习笔记3
- JavaSE学习笔记
- JavaSE学习笔记--Annotation
- JavaSE学习笔记
- javase学习笔记-----函数
- javase学习笔记------------数组
- javaSE学习笔记5——访问控制权限private、default、protected、public
- 启动 tws 中间件后,发现 端口 31116 没有开
- 汇编语言超浓缩教程
- 网站title/keywords/description的编写原则
- Friend 非成员函数声明为友元 【C++ friend】
- javaSE学习笔记6 重写
- junit BeforeClass和AfterClass
- C++
- zoj 3256 Tour in the Castle(插头DP一条回路+矩阵连乘)
- 精确计算程序运行时间 秒杀毫秒级 精度远超毫秒
- C和 C++多大存储区域
- virtualbox网络配置和调试linux内核
- 【算法】找两个有序集合的交集
- kref