super
1,基本
super能出现在实例方法和构造方法中。
super不能使用在静态方法中。
super. 大部分情况下是可以省略的。
super. 什么时候不能省略?
super() 智能出现在构造方法的第一行,通过当前的构造方法区调用“父类”中的构造方法,其意义是创建子类对象的时候,初始化父类特征。
2,super()
表示通过子类的构造方法调用父类的构造方法
3,结论
当一个构造方法第一行既没有this()又没有super()的话,默认会有个super();,表示通过当前子类的构造方法调用父类的无参数构造方法,所以必须保证父类的无参数构造方法是存在的。
super()和this()不能共存。
父类的构造方法是一定会执行的。
java语言中不管new什么对象,最后Object类的无参数构造方法一定会执行。其在栈顶,最后调用但最先结束。
super(实参)的作用:初始化当前对象的父类型特征。并不是创建新的对象。
super不是引用,也不保存内存地址,super也不指向任何对象。super只是代表当前对象内部的那一块父类型特征。
4,super什么时候省略?
当父类和子类中都有的属性,如果想在子类中访问父类的属性,则需要加super 。用类区分子类和父类的同名属性。
final
1,final修饰的局部变量,只能被赋值一次。
2,final修饰的实例变量,只能被赋值一次。这里要求程序员必须手动赋值。赶在系统赋值之前。
clsss User{
final int age;
public User(){
this.age = 20;
}
}
此时复制成功,因为构造方法先于final int age执行。
final修饰表示不能改变,此时修饰某实例变量,表示此实例变量不能改变,那么就写为静态的,放在方法区中。static final int age;----这就是常量,和静态变量都存储在方法区中。
3,final修饰的方法无法被覆盖、重写。
4,final修饰的类无法被继承。
5,final修饰的变量是引用时,该引用只能永远指向对象。不能重新指向其他对象,但该引用指向的对象内部的数据是可以修改的。