----------siwuxie095
方法的重写:
(1)在继承中也存在着重写的概念,其实就是子类定义了和父类同名的方法
(2)定义:方法名称相同,返回值类型相同,参数也相同
(3)重写限制:被子类重写的方法不能拥有比父类更严格的访问权限
(4)访问权限:private < default < public
〔private 只能在当前类中进行访问,default 可以在同一包下进行访问
(没有写 private 和 public,即是 default),public 可以在整个工程下
都可以访问〕
代码:
package com.siwuxie095.extendsdemo;
class A{ public void tell() { System.out.println("A---tell() 方法"); }
private void say(){}
//前面什么都没有写的即是 default void print(){}
}
class B extends A{ public void tell(){ //调用父类的方法 super.tell(); System.out.println("B---重写 tell() 方法"); } }
public class ExtendsDemo04 {
public static void main(String[] args) { B b=new B(); b.tell(); }
} |
运行一览:
super 关键字:
强行调用父类方法的执行
super 不一定在重写中使用,也可以表示方法是从父类继承而来的
如:
子类对象在实例化之前,先调用父类构造方法,后调用子类构造方法的原因:
虽然没有手动去调用父类的构造方法,其实是省略了 super();,在编译时系统
自动在子类的构造方法中加入 super();
代码:
package com.siwuxie095.extendsdemo;
class Father{ private String name; private int age;
public Father() { System.out.println("父类的构造方法"); }
}
class Son extends Father{ public Son() { super(); System.out.println("子类的构造方法"); }
}
public class ExtendsDemo03 {
public static void main(String[] args) { //实例化时,先执行父类的构造方法,再执行子类的构造方法 Son s=new Son(); }
} |
运行一览:
【made by siwuxie095】