this关键字
在形参和属性名一致时,通过this来区分
调用本类的属性和方法(如果没有则从父类查找)
调用本类中重载的其他构造器,必须放在首行,所以只能调用一个其他构造器;
super关键字
子类和父类属性同名时(很少出现),默认调用自己的,调用父类的属性则要用 super.属性 的形式来调用,
子类重写了父类的方法,想在子类中调用父类重写的方法时,要用super.方法 的形式来调用,
调用父类的构造器,必须放在子类构造器的首行,
本类重载的其他构造器和父类的构造器,只能调用一个,
构造器首行没有显示的声明this 或 super时,则构造器会默认调用super()空参构造器,
final关键字
变量
基本数据类型:被final修饰后,其真实的数值无法在改变,即只能进行一次赋值操作,
引用数据类型:被final修饰后,其地址值无法改变,但地址值对应的空间,其内容可以变化,
对于成员变量,被final修饰后,在声明是就必须得初始化(赋值),对于方法里的变量(局部变量),不必初始化,
方法
被final修饰的方法无法被重写,可以进行重载,
public class Person {
private String name;
public Person() {
}
//final修饰的方法
public final void eat() {
System.out.println("吃");
}
}
public class Student extends Person {
private int number;
//重写会报错- Cannot override the final method from Person
//public void eat() {
// System.out.println("吃吃吃");
//}
//重载
public void eat(String fruit) {
System.out.println("吃" + fruit);
}
}
注意:父类中被private修饰的final方法,在子类中可以有同名的方法,因为private方法无法被子类继承,所以子类中同名的方法是子类特有的,而不是从父类继承来的。
类
被final修饰的类无法被继承
static关键字
属性
静态属性(类变量)
static修饰的成员变量叫做静态变量(类变量),类变量属于这个类,而不是对象。创建多个某类的对象,多个对象共享一个静态变量,一改全改,当通过某个对象修改过静态变量时,会导致其他对象调用该静态变量时,发现该静态变量已经被修改,一改全改
非静态属性(实例变量)
创建了类的多个对象时,每个对象都独立拥有一套类中的静态属性,当修改其中一个对象的某个非静态属性时,不会改变其他对象中的该属性的值,
特点:
加载时间:静态变量随着类的加载而加载,
调用:静态变量的加载早于对象的创建,new出来的对象之前就能用类名调用静态变量,“类名.静态变量”,实例变量不能通过类调用,
独立性:由于类只会加载一次,所以静态变量在内存中,只存在一份,存在方法区的静态域中,
静态属性一般不在构造器中初始化,
方法
加载:随着类的加载而加载,可以通过“类.静态方法名”,调用,或者“对象.静态方法”,
调用:静态方法中只能调用静态的方法或者属性,而非静态方法可以调用静态或者非静态(和他们的生命周期有关,)(晚出生的可以调用)
静态方法可以通过类名调用,
代码块
静态代码块
随着类的初始化,静态代码块的内容也会执行,
非静态代码块
在类实例化对象时就会执行,
内部类
静态内部类不能调用外部的非静态方法和属性