代码块的加载顺序
静态代码块>成员代码块>构造方法(1,加载类2,创建对象3,调用方法)
static静态修饰符
可以修饰成员变量 成员方法
static特点
被static修饰的成员 属于类 不单属于某个对象 是所有对象所共享
静态的访问特点
类名直接访问
类名.属性名
类名.方法名(参数)
static的注意事项
静态的内容随着类的加载而加载 优先于对象存在
静态的内容只能访问静态的内容 不能使用this/super
final最终修饰符
类 :被final修饰的类不能被继承
成员方法: 被final修饰的方法 不能被重写
变量: 是常量 只能赋值一次 不能被二次赋值
final关键字注意事项
1.final修饰引用类型变量 地址值不能修改 但是属性值可以修改
2.final修饰成员变量 不能使用默认值,必须在创建对象前赋值。
第一种 在定义常量时就显式赋值
第二种 在构造方法中赋值 每一个构造方法都需要为其赋值(随着类的存在而存在)
3.常量的命名规则 所有字母都大写 多个单词用_连接
final String HELLO_WORLD = "";
代码块
基本定义:{}
几种代码块的执行先后顺序
局部代码块:限定变量的作用域范围
成员代码块:创建对象时执行 创建一次对象就会执行一次
静态代码块:静态内容随着类的加载而加载,类只要加载静态代码块就会执行 仅执行一次
类什么时候会加载?
创建对象 访问静态成员 创建子类对象 类都会加载
基本格式:
1.定义一个类 实现接口
2.重写方法
3.创建对象
匿名内部类 作用:就是临时创建一个类的子类对象的快捷方式(说白了就是创建临时子类)
格式:
new 父类/接口(){
重写方法
};
包:
就是操作系统的文件夹 用来区分文件
包的声明
package xxx.xxx.xxx 定义class文件的位置 必须写在有效代码的第一行
包的访问(默认public修饰)
1.类全名访问
同一个包下不需要使用类全名访问
java.lang包下的类不需要使用类全名访问
2.导包访问
如果在一个类中 使用不同包下相同类名的类 只有一个包下的类可以导包 另一个全名访问即可
eg:
1.import java.until.Scanner
Scanner sc=new Scanner(System.in);
2.
java.until.Scanner sc=new java.util.Scanner(java.langue.Ststem.in);
访问权限
在同一个类中 四种访问权限 都可以访问 (public protected default priavte)
同一个包下的子类中 只有private不能访问 (public prrotcted default )
同一个包下的无关类 只有private 不能访问 (public prrotcted default )
不同包下的子类 public 和 protected 可以访问 (public prrotcted )
不同包下的无关类 只有public 可以访问 (public )
public protected 空的(default) private
同一类中 √ √ √ √
同一包中(子类与无关类) √ √ √
不同包的子类 √ √
不同包中的无关类 √
修饰符总结
权限
public 默认 修饰 类 方法 成员变量
protected private 方法 成员变量
final 类 方法 变量
static 成员方法 成员变量
abstract 类 方法
final和abstract能不能一起使用?不能
static和abstract能不能一起使用? 不能
原文地址:https://www.cnblogs.com/JunQiang-Ma/p/9958919.html