方法重写
- 两同两小一大原则:
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。
方法调用
- 方法和变量在继承中的覆盖和隐藏:
- 编译器只允许调用在类中声明的方法
- 父类引用子类变量只能调用父类的方法和子类中覆盖了父类的方法。
- 同名的实例方法被覆盖 ,同名的静态方法被隐藏。(因为静态属性属于类,不属于对象,对象只能调用自己类的静态属性)
- 隐藏和覆盖的区别在于,子类对象转换成父类对象后,能够访问父类被隐藏 的变量和方法,而不能访问父类被覆盖 的方法。
- 变量只能被隐藏,如果需要访问父类被隐藏的变量,加上super就好了,比如访问父类的name,写上super.name就好了
参考链接 - 子类可直接用方法名调用父类的静态方法
- Object类的toString()方法默认返回该对象实现类的“类名+@+hashcode”值,这个返回值不能实现自我描述功能,所以需要重写Object类的toString()方法来实现。
构造器
子类的构造器会自动调用父类的无参构造器
- 如果父类没有无参构造器,则需用super显示编写调用父类的有参构造器,否则编译不通过
- 如果父类没有构造器则不用写super,因为编译器会自动给父类创建无参构造器