super关键字
一个类可以使用关键字super,来显式地引用从父类继承的成员变量或方法。可以把super看作是子对象对父对象的引用。可以用this引用来替换super
当子类想调用父类中重写的方法时,关键字super也可以用到子类中。这就允许子类重写从父类继承的方法,但是不会完全改变父类的行为。
当子类在重写父类的方法时,如果需要调用父类中的该方法,就必须使用super关键字。子类只有构造器中可以这样使用,并且必须是第一排
如果要使用super()或者this(),则必须将其放在执行代码第一行
如果没有调用super()或者this(),则编译器会自动调用无参构造器
final关键字
final表示最终,修饰变量,表示常量,不可被改变; 修饰类,表示最终类,不能被继承; 修饰方法,表示最终方法,不可被重写
实例化过程
当一个对象被实例化时,发生下列事件序列:
1)new运算符调用子类的构造器。
2)子类会用this关键字调用子类的其它构造器。最后,子类中的第一行代码中不是this()的构造器将被调用。
3)在子类的构造器中的任何语句执行前,父类的构造器必须用super关键字调用。如果没有显式地使用super调用,那么编译器会用super()调用无参数的父类构造器。
4)如果父类也是另一个类的子类,那么在父类的构造器中的任何语句执行前,父类构造器必须使用super调用更高一层父类的构造器。
5)本过程继续执行,直到到达类层次树的顶部,即Object类。
6)Object类中的构造器执行,然后控制流程转到继承层次树中Object下面的类的构造器中。
7)构造器沿着继承层次树向下执行。最后一个要执行的构造器,实际上是第一步中先调用的那个构造器。
访问修饰符
简单的说就是访问的权限,代表是否能够进行访问,通过访问修饰符可以对程序中的文件和数据信息进行权限掌控,类的每一个成员,包括类中的成员变量、方法、构造器都需要写访问修饰符
共有四种访问修饰符:
public,公共的,所有类都可以访问
protected,受保护的,子类、同包类、本类可以访问
默认的(什么也不写),同包类、本类可以访问
private,私有的,只本类可以访问
注意事项:
类也有访问修饰符,但是类访问修饰符只有公有或默认,公有的类可以被其它类访问,而默认的只能被本包中的其它类访问
一个类中所有成员都是private的,使用get、set方法让其它类间接访问
加上get和set方法后就可以人为的控制一个类中数据的只读和只写性,-----封装(面向对象编程的四大基本概念之一)封装的作用就是将隐藏类的成员,只提供相应的get和set方法,进行控制
静态成员
通过关键字static来修饰的类中的成员就是静态成员
在Java中,代码都需要出现在类中,并且所有的属性和行为都需要实例来进行调用,就可以使用静态的
静态成员不需要使用实例来调用,可以直接使用
由于不需要实例化某个对象来调用静态成员变量,因此静态成员变量被认为是全局的,任何类都可以直接访问静态成员变量,同理,我们也可以创建静态的方法,使得所有的类可以直接调用该类的静态方法
注意事项:
1、在类的加载过程中,静态成员会随着类的加载而加载,而非静态成员会在实例化后才会加载
2、由于加载的时间不同,因此在调用变量和方法时一定要注意
①静态方法只能调用静态的变量(非静态变量还未被加载)
②非静态方法能调用静态的变量(静态变量已加载)
3、在调用上也有不同
①静态成员调用时是使用——类名.静态成员
②非静态成员调用时是使用——实例对象名.非静态成员