abstract 关键字
关键字用于声明抽象类和抽象方法。抽象类是不能被实例化的类,它用于定义一组相关的类的公共接口。
方法
特点:没有方法体
语法:
访问权限修饰符 abstract 返回值类型 方法名(形参列表);
注意:
有抽象方法的类一定是抽象类类
特点:不能直接创建对象
语法:
访问权限修饰符 abstract class 类名{
}
注意:
1,抽象类不一定必须包含抽象方法,而如果一个类包含了抽象方法,则该类必须被声明为抽象类。
2,子类继承与抽象类,要么重写父类提供的所有抽象方法,要么自己也是抽象类
抽象方法和抽象类
没有具体实现的方法,只有方法的声明,没有方法体。抽象方法的声明使用
abstract
关键字,通常位于抽象类中。子类必须实现(覆盖)抽象类中所有的抽象方法,否则子类也必须声明为抽象类。抽象类通过强制子类实现抽象方法来达到多态性的目的。
static 关键字
含义:静态的,公共的
用于定义静态成员或静态方法。静态成员属于类本身而不是对象,它们在类加载时被初始化,并且在整个程序的执行过程中都只有一份副本。静态方法是属于类而不是对象的方法,可以通过类名直接调用,无需实例化对象。静态成员和方法可以通过类名访问,无需创建对象。
属性
特点:
1,可以使用类名直接调用
2,属于该类的所有对象,一个对象对其进行修改,那么该类的所有对象的该属性值都将被修改
语法:
访问权限修饰符 static 数据类型 属性名;
方法
特点:
1,可以使用类名直接调用
语法:
访问权限修饰符 static 返回值类型 方法名(形参列表){
方法体
}
注意:
1,静态方法中不能直接使用非静态成员
2,静态方法中不能使用this或super关键字
静态成员:使用static修饰的属性与方法
静态属性:使用static修饰的属性
静态方法:使用static修饰的方法
代码块
特点:当类被加载时执行一次
语法:
static{
}
执行顺序
1,没有继承的情况下
先静,在非静
2,有继承的情况下
先父静,在子静,父非静,子非静
先静,在非静
2,有继承的情况下
先父静,在子静,父非静,子非静
静态成员和类加载
静态成员在类加载时被初始化。当首次使用类时,Java 虚拟机会加载类的字节码并执行类的初始化过程,这个过程包括静态成员的初始化。静态成员在内存中只有一份实例,无论创建多少个对象,它们共享同一个静态成员。
final
含义:最终的,不可修改的
用来修饰类、方法和变量。当用
final
修饰类时,表示该类不能被继承。当用
final
修饰方法时,表示该方法不能被子类重写(覆盖)。当用
final
修饰变量时,表示该变量是一个常量,只能被赋值一次。
属性
特点:必须在声明时赋值,并值不可修改
语法:
访问权限修饰符 final 数据类型 属性名 = 值;
局部变量
特点:只能赋值一次
语法:
final 数据类型 变量名;
变量名 = 值1;
方法
特点:该方法不能被重写
语法:
访问权限修饰符 final 返回值类型 方法名(形参列表){
方法体;
}
注意:
final与abstract不能同时修饰方法
类
特点:不能被继承
语法:
访问权限修饰符 final class 类名{
}
注意:
final与abstract不能同时修饰类
最终类、方法、常量
指不能被继承的类,无法有子类。最终方法是指不能被子类重写的方法,子类无法修改其实现。最终常量是指只能被赋值一次且不可修改的变量,通常用全大写字母表示。最终类、方法和常量通常用于保证程序的安全性、稳定性或提高效率。