final关键字
使用final关键字做标识有“最终的”含义
final可以修饰类,方法,属性和变量
当final关键字修饰类时,该类不能被继承
final修饰方法时,该方法不允许被重写
final修饰属性时,该属性不会进行隐式的初始化,就是说必须在声明的时候进行赋值或者是在构造方法中进行初始化(只能选择其一)
final修饰变量时,变量的值只能进行赋值一次,即为常量。
super关键字
在对象内部进行使用,可以代表父类对象
访问父类的属性 super.属性
访问父类的方法 super.方法
public class Animal {
public String name="动物";//父类属性
//父类方法
public void lound(){
System.out.println("动物叫");
}
}
//子类继承父类
public class Cat extends Animal {
public String name="小猫";//子类属性
//子类重写父类方法
public void lound(){
System.out.println("不想叫");
}
//子类方法
public void test1(){
System.out.println(super.name);//调用父类的属性
}
}
public class Initail {
public static void main(String[] args) {
//创建子类对象
Cat cat=new Cat();
//调用子类方法
cat.test1();
}
}
super关键字的应用
在进行创建子类对象时,子类的构造的过程中必须调用其父类的构造方法,这当中就使用的是super关键字,是隐式进行使用的
public class Animal {
public String name="动物";//父类属性
//父类的构造方法
public Animal(){
System.out.println("父类的构造方法执行了");
}
//父类方法
public void lound(){
System.out.println("动物叫");
}
}
/子类继承父类
public class Cat extends Animal {
public String name="小猫";//子类属性
//子类的构造方法
public Cat(){
super();//之前只是不显示,但这个地方是有super的
//特别注意super必须放在构造方法块中的首行
System.out.println("子类的构造方法执行了");
}
//子类重写父类方法
public void lound(){
System.out.println("不想叫");
}
}
public class Initail {
public static void main(String[] args) {
//创建子类对象
Cat cat=new Cat();
//调用子类方法
cat.test1();
}
}
注意
如果子类构造方法中既没有显示调用父类的构造方法,而父类又没有无参的构造方法,则编译会出错