public class ValueTest9 extends ValueTest8 {
public ValueTest9() {
}
public ValueTest9(int x) {
super(x);
}
private int bonus = 2;
public static void main(String[] args) {
/**
* 1.覆盖方法 不能访问父类的私有域,调用父类的方法 super 关键字
*
* super和this不一样,super不是一个对象的引用,只是编译器调用超父类的关键字
*/
// ValueTest9 v1 = new ValueTest9();
// v1.getSalary();
}
public int getSalary() {
System.out.println(this);
System.out.println(super.getClass());
int salary = super.getSalary();
return salary + bonus;
}
/*
* 3.子类构造器
*
* 1)子类可以通过构造器访问父类的私有域对其初始化
* 2)super关键字访问父类构造器,必须放在第一行
* 3)子类构造器没有显示调用父类的构造器,默认调用无参构造器,父类没有无参构造器Java编译器会报错
*/
/*
* this
* 1)引用隐式参数
* 2)调用本类其他的构造器
*
* super
* 1)调用父类的方法
* 2)调用父类的构造器
*
* 构造参数既可以传递给本类的构造器,也可以传递给父类
*
* 调用构造器的语句必须在第一行
*
*/
/*
* 继承层次:
* 一个公共的超类派生出所有类的集合
* 继承链:路径
*
*/
/*
* 多态
* 子类的对象赋值给父类
*
*/
public void method1(){
ValueTest8 v1 = null;
v1 = new ValueTest9();
v1 = new ValueTest8();
}
/*
* 方法调用:
* 1)找到子类和超类同方法名的方法
* 2)匹配参数
*/
/*
* final:不允许扩展
*/
//public final class ValueTest8 {
}