Final
含义:最终的,不可修改的
可以修饰
类
语法:访问权限修饰符 final class 类名 [extends 父类]{}
特点:用final修饰的类不能被继承,被称为最终类
变量
语法:final 数据类型 变量名;
特点:初始化后值不能被修改(只能赋值一次),所以final修饰的变量也成为常量.
可以在switch的case中当常量用.
属性
语法:访问权限修饰符 final 数据类型 属性名 = 值;
注: 因为final修饰的变量只能赋值一次,属性也算变量但是属性有默认值,所以final修饰的属性必须在声明时赋值,
final修饰的属性的值不能被修改,常量要全大写所以final修饰的属性要全大写.
方法
语法:访问权限修饰符 final 返回值类型 方法名(形参列表){}
注:final修饰的方法不能被重写,可以被继承,可以被重载
abstract
含义:抽象的,不可描述的
可以修饰
类
语法:访问权限修饰符 abstract class 类名 extends 父类名{
属性
变量
方法
}
特点:abstract修饰的类不能直接创建对象(不能new)
间接创建:可以用它的子类创建子类对象再转换成父类
Animal animal = new Person
方法
语法:访问权限修饰符 abstract 返回值类型 方法名 (形参列表);
注:1abstract修饰的方法没有方法体,它的子类重写这个方法具体实现就行
2 抽象方法所在的类必须是抽象类
3但是抽象类中可以没有抽象方法
4子类继承于抽象类要么自己也是抽象类要么重写父类所有的抽象方法(实现父类抽象方法),因为子类会把所有的方法(构造函数除外)都继承过来.
5 final与abstract不能同时使用
代码块
作用:包装一段代码
使用位置:
类中方法中:
又名(实例代码块)
语法格式:{}一对大括号
注:可以使用没有任何意义
类中方法外
语法格式:{}一对大括号
注:1,每次创建该类对象时都会执行一遍代码块中的代码
2,优先于构造函数之前执行,但是在给属性赋值之后
3,继承关系中执行流程:
父属性
子属性
父代码块
父构造函数
子代码块
子构造函数
作用:统计该类对象被创建多少次统计次数的变量要为static类型
private static num = 0;
{num++;}
static
含义:静态的公共的
修饰:
1,内部类:
2,属性:
语法:访问权限修饰符 static 数据类型 属性名;
特点:1属于该来的所有对象,一个对象改了这个值,其他对象的该属性也会被修改,只存这一份
2可以使用类名直接调用,也可以使用对象名调用
注:可以同时使用static和final修饰一个属性,这种属性称为静态常量
static修饰的属性会在加载时就把东西加载到静态区属性随着对象的生成才加载
3,方法
语法:访问权限修饰符 static 返回值类型 方法名(){}
注: 普通方法中可以使用静态属性与非静态属性
普通方法中可以使用this关键字和super关键字
静态方法中不能直接使用非静态属性,可以直接使用静态属性
静态方法中不能使用this super关键字,通过类名直接调用静态方法时this没有指向的东西所以不能用this,super也是一样.
静态方法中不可以直接调用非静态方法,可直接调用本类静态方法,可以通过对象调用非静态方法.
就是因为静态提前加载和调用方式导致这些不同
没有对象名的对象称为匿名对象
4,代码块
static{
}
又叫:静态代码块
定义位置:类中,方法外
执行时机:随着类加载而执行,因为一个类只会加载一次,所以静态代码块只会执行一次
执行流程
父类属性
子类属性
父类静态代码块
子类静态代码块
父类实例代码块
父类构造函数
子类实例代码块
子类构造函数