1.java的super关键字
前提: 子类与父类有相同的属性如age,相同的方法如print();
在子类方法中写一个方法,在测试类中创建子类对象,调用子类里的这个方法
1)在子类的这个方法中用super.age ,在测试类中执行打印的是父类的age属性
2)用age, 则在测试类中执行打印的是子类的age属性
3)在子类的这个方法中用super.print();在测试类中执行调用的是父类的print()方法
4)直接调用print(),则在测试类中执行调用的是父类的print()方法
应用:
1)在子类构造方法中有一个super();1.自己可以写,但必须在子类构造方法的第一行。
2.也可以不写,系统自动创建
2)父类有有参数的构造方法,且没有无参数的构造方法。且子类构造方法中有没有super();
则编译出错
demo:
父类:
public class Animal {
public int age = 20;
public void print(){
System.out.println("父类海底世界!");
}
public Animal(){
System.out.println("Animal类执行了!");
}
}
子类:
public class Cat extends Animal {
public int age =10;
public void print() {
System.out.println("子类动物世界!");
}
public Cat(){
super(); //这里的super();1.自己可以写,但必须在子类构造方法的第一行。2.也可以不写,系统自动创建
System.out.println("Cat类执行了!");
}
public void ffinal(){
//super.父类对象属性
System.out.println(super.age);
//输出子类对象属性,直接属性名就可以了
System.out.println(age);
//super.父类方法
super.print();
//调用子类方法,直接调用方法名
print();
}
}
测试类:
public class FinalTest {
public static void main(String[] args) {
Cat work1 = new Cat();
work1.ffinal();
}
}
运行结果:
Animal类执行了!
Cat类执行了!
20
10
父类海底世界!
子类动物世界!