一、代码块
1,语法:
{
方法体;
}
2,调用
创建该类对象时,由jvm调用
3,注意:
在执行构造函数执行被时被调用
二、类加载
1,class 文件运行时步骤:
1,加载class 文件(字节码文件)类加载
2,运行代码
2,类的加载时机
1,该类对象第一次创建时
2,获取该类的类对象时
3,第一次使用类名调用该类的静态属性或方法时
.....
三、三大修饰符【static,final,abstract】
1,static
1,含义:静态的(static修饰的内容属于该类)
2,可以修饰:
1,属性:静态属性
特点:属于该类的所有对象
语法:
访问权限修饰符 static 数据类型 属性名;
调用方式:
类名 . 属性名;
或
对象名 . 属性名;
静态属性与非静态属性的区别:
静态属性属于该类的所有对象
非静态属性属于该类的对象
静态属性可以使用类名或对象名调用
非静态属性只能使用对象名调用
静态属性在类加载时就被初始化了
非静态属性在对象创建时被初始化
2,方法
特点:
1,静态方法直接可以使用类名调用,也可以使用对象名调用
类名调用语法: 类名 . 方法名(实参列表);
对象名调用语法: 对象名 . 方法名(实参列表);
2,静态方法可以被继承,但不能被重写
语法:
访问权限修饰符 static 返回值类型 方法名(形参列表){
方法体;
}
3,静态方法与非静态方法的区别:
静态方法可以使用类名直接调用或使用对象名调用
非静态方法只能使用对象名调用
静态方法中不能使用this或super
非静态方法中可以使用this或super
静态方法中不能直接使用非静态成员(属性或方法)
非静态方法中可以直接使用非静态成员和静态成员
3,代码块:静态代码块
特点:在类加载时被调用
语法:
static {
方法体;
}
注意:静态代码块只在类加载时被调用一次
静态代码块与代码块的区别:
1,静态代码块在类加载时被调用一次
2,代码块在对象创建时调用,每次对象创建都会被调用
4,内部类
2,final
1,含义:最终的,不可修改的
2,可以修饰:
1,变量【成员变量;局部变量】
1,概念:final修饰的变量称之为常量
2,语法:
---final 数据类型 常量名;
---访问权限修饰符 final 数据类型 常量名;
注意:
1,被final所修饰的变量,值不被修改
2,被final所修饰的局部变量只能赋值一次
3,被final修饰的属性必须赋值
4,final所修饰的变量为常量,变量名要求全大写【潜规则】
2,方法
1,概念:final 所修饰的方法不会被重写
2,语法:
访问权限修饰符 final 返回值类型 方法名(形参列表){
方法体;
}
3,类
1,概念:final 所修饰的类不能被继承
2,语法:
访问权限修饰符 final class 类名{
属性;
方法;
构造函数;}
3,abstract
1,含义:抽象的
2,可修饰:
1,方法:抽象方法
语法:
访问权限修饰符 abstract 返回值类型 方法名(形参列表);
注意:1,抽象方法没有方法体
2,有抽象方法的类一定是抽象类
2,类:抽象类
语法:
访问权限修饰符 abstract class 类名{
属性;
方法;
构造函数;
}
注意:1,抽象类中不一定要有抽象方法
2,抽象类不能直接创建对象
3,子类继承于抽象类,要么子类也是抽象类,要么重写父类中的所有抽象方法
注意:abstract 与 final 不能同时使用