1 this关键字
1.1 出现原因
- 在声明一个属性对应的set()方法时,通过形参给对应属性赋值,属性名和形参名同名时,无法区分。
- 让类中的一个方法访问该类中另一个方法或实例变量
1.2 可以调用的结构:成员变量,方法,构造器
1.3 this在方法中调用是指当前对象,在构造器中调用是指正在创建的对象
1.4 this调用构造器 格式:this(形参列表) 可以在类的构造器中调用其他构造器(写在首行)
如果一个类中声明了n个构造器,最多有n-1个构造器可以使用 this(形参列表)
2 super关键字
1.1 出现原因
- 子类调用父类以后,对父类的方法进行了重写,为了调用父类中被重写的方法
- 子类调用父类以后,发现子类和负类定义了同名属性,为了在子类中区分两个同名属性
1.2 super调用构造器
- 子类继承父类时不会继承父类构造器,只能通过 “super(形参列表)” 方式调用父类指定的构造器
- “super(形参列表)” 只能放在首行
- “super(形参列表)” 和 “this(形参列表)” 只能在首行二选一
- 如果首行既没有“super(形参列表)” 也没有“this(形参列表)”,则默认调用super(),即父类中的空参构造器
- 子类中任何一个构造器要么调用本类中重载构造器,要么调用父类构造器
- 一个类声明中有n个构造器,最多调用n-1个“this(形参列表)”,其余一个调用“super(形参列表)”
3 static关键字
static表示静态,用于修饰类的成员(属性,方法和内部类)
静态变量:使用static修饰的属性属于类本身,即使没有创建类的实例,也可以通过类名直接访问静态变量。静态变量在类加载时初始化,所有实例共享同一个静态属性
静态方法:使用static修饰的方法属于类本身,即使没有创建类的实例,也可以通过类名直接访问静态方法。静态方法只能访问静态属性和其他静态方法,不能访问非静态属性和方法
静态初始化块:使用static修饰的代码块。静态初始化块在类加载时执行,对静态属性或者初始化执行一些静态操作,每个类中可以有多个静态块,按照在类中的顺序执行
静态内部类:使用static修饰嵌套类,与静态内部类不同,可以直接通过外部类名访问静态内部类
3.1 注意事项
- 静态成员不能直接访问非静态成员,但非静态成员可以直接访问静态成员
- 静态方法中不能使用this关键字,因为this代表当前对象实例,静态方法没有特定的实例
- 静态成员和方法可以在没有创建类的实例情况下使用
- 静态方法不能被子类重写,只能被隐藏(父类和子类有相同静态方法)
static关键字与类相关,用于定义类的成员,可以通过类名直接访问,并在类加载时初始化
4 abstract
abstract表示抽象,应用于类,接口和方法上
- 抽象类:使用abstract修饰的类称为抽象类。抽象类不能实例化,只能作为其他类的基类。抽象类可以包含抽象方法或者非抽象方法。如果一个类包含抽象方法,那它一定是抽象类。
- 抽象方法:使用abstract修饰的方法。抽象方法没有具体实现,只有方法签名(返回类型,方法名和参数列表)。抽象方法声明在抽象类中,子类必须实现所有继承的抽象方法,除非子类本身是抽象类
注意事项:
- 抽象类和抽象方法不能被实例化,需要通过子类进行扩展和实现
- 子类继承抽象类时,必须实现父类中所有抽象方法,除非子类也是抽象类
- 抽象方法不能使用private final 和static修饰(private方法和final方法不能被重写,而抽象方法一定要被重写;static可以被类调用,抽象方法没有方法体不能被调用;final不能有子类,抽象方法一定有子类)
抽象类提供了一种模板或者契约,可以通过子类或实现类来实现具体功能。常用于面向对象中继承和多态使用(功能内部一部分是实现的,另一部分实现不确定,可以把不确定部分暴露出来让子类实现)
5 interface关键字
interface表示接口,是一种特殊的抽象类,可以包含常量和抽象方法的声明
注意:
- 接口中的属性必须使用 public static final 修饰(可以使用)
- 接口中不能有构造器和代码块
- 类可以实现接口(多实现,弥补了单继承的局限),类必须将实现的接口中所有的抽象方法均实现,否则该实现类为抽象类
- 接口与接口之间可以多继承
作用:
- 接口定义了类应该具备的行为和功能,类通过实现接口来遵守,确保一致的行为
- 实现多态性:通过接口,可以创建能够处理不同对象的通用代码,提高代码的灵活性和可复用性(接口名 变量名 = new 实现类对象)
通过接口的实现类实现多态性,可以使用接口类型的引用变量引用不同的实现类对象,实现对不同对象的统一处理。这提高了程序的灵活性和可扩展性。
6 final关键字
修饰类:被final修饰的类为最终类,不能被其它类继承
修饰方法:被final修饰的方法为最终方法,不能被子类重写
修饰变量:1 对于基本类型,一旦赋值后无法改变 2 对于引用类型,final变量不能再指向其他对象,但所指对象的状态是可变的(不能new,可以add)
作用:
- 防止类被继承,方法被重写,变量被修改,增强程序的安全性和稳定性
- 在多线程环境中,final可以实现线程安全
final关键字不同于const关键字,const是c和c++关键字,用于定义常量并在其声明时必须进行初始化,final是java中关键字,可以在声明时赋值,也可以在构造函数时赋值,但一旦赋值后不能修改。
7 instanceof关键字
instanceof 是 Java 中的一个关键字,用于判断一个对象是否是指定类型或其子类的实例 object instanceof type 返回的时布尔类型