方法的重写
在子类中可以根据需要对从基类继承来的方法进行重写
重写方法必须和被重写方法具有相同的方法名称、参数列表和返回类型
重写方法不能使用比被重写方法更严格的访问权限
在Java类中使用super来引用基类的成分
子类的构造的过程中必须调用其基类的构造方法
子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法。
使用this(argument_list)调用本类的另外的构造方法,必须写在第一行
如果调用super,必须写在子类构造方法的第一行
如果子类的构造方法中没有显示地调用基类的构造方法,则系统默认调用基类的无参数的构造方法
如果子类的构造方法中既没有显式调用基类的构造方法,而基类中又没有无参的构造方法,则编译出错
不可以在一个构造方法中既调用基类的构造方法又调用本类其他的构造方法,因为this()和super()都必须是方法中的第一天语句
下面举例子说明:
- //java方法重写和super关键字
- //在继承中,其实就是子类定义了和父类同名的方法
- //就是方法,属性都是相通的
- //重写限制:
- //被子类重写的方法不能拥有比父类方法更加严格的权限
- //super:强行调用父类方法的执行
- /*重载和重写的区别?
- * 重载是发生在一个类中 对权限没有要求 而且重载的方法参数可以不同
- * 重写发生在继承汇总 被子类重写的方法不能拥有比父类方法更加严格的权限,重写的方法中参数名字完全相同
- *
- */
- class A{
- public void tell(){
- System.out.println("我是tell方法");
- }
- //private(同一个类下) < default(在同一包下可以被访问) < public(整个工程都可以访问)
- //默认default
- void say(){
- }
- }
- class B extends A{
- //这种方式称为方法的重写
- public void tell(){
- //super不一定在重写中使用,也可以表示那些方法是从父类中被继承过来的。
- super.tell(); //通过super关键字可以调用父类中的tell方法
- System.out.println("我重写了tell方法");
- }
- }
- class HelloWorld{
- public static void main(String[] args){
- B b = new B();
- b.tell();
- }
- }