//extends,this,super,final 关键字的应用
/*
final 关键字的应用:
1.如果 final 关键字加在了一个类前面,比如: final class Person 那么 Person 类就不能再被其它的类去 extends,
这个类就是最终版本的
2.如果 final 关键字加在了一个类的某个方法前,比如:public final void talk()那么这个方法就不能被子类重写,
这个方法就是最终版本
3.如果 final 关键字加在了一个属性前:比如:public final String name ,那么 name 这个属性就成为了一个常量,就
必须对这个常进行赋值,一般 final 关键字和 static 组合使用 象这样 public static final String name = "zhangsan";
这样 name 属性就成了一个静态常量,就必须对它象上面这样进行显式初始化,此外象 public static final 标识的属性在其它类中
可以直接通过 类名.属性名的 方式访问,非常方便
*/
class Person {
public static final String name = "lisi";
public int age;
public Person() {
}
public Person(int age) {
this.age = age;
}
public void talk() {
System.out.println("name = " + name + ",age = " + age);
}
}
class Student extends Person {
private String school;
public Student(int age) {
super(age); //利用super关键字调用父类中相匹配的构造方法
}
public Student(int age,String school) {
this(age); //利用this关键字调用本类中其它构造方法
this.school = school;
}
public void talk() { //子类中的 talk 方法覆盖父类中同名的方法
/*利用 super.方法 来调用父类中的同名方法,调用父类中的同名方法时不可直接写成 talk(),那就是自己调用
自己了(成了一个递归调用,没有结束条件最终成为死循环)
*/
super.talk();
System.out.print(",school = " + school);
}
}
class TestStudent {
public static void main(String[] args) {
Student s = new Student(10,"yzschool");
s.talk();
}
}