关键字
abstract:抽象的
修饰类:这个类不能被new成实体 只能被继承 通过继承去调用内部的属性和方法 去重写内部的抽象方法
里面可以有抽象方法 也可以由普通方法
修饰方法:这个方法不能有方法体 这个方法必须存在于抽象类中 这个方法必须被这个类的子类重写
public abstract void show();
abstract 不能和private final static一起使用
final:最终的
修饰变量:变为常量 值不可再改变
final int age = 18; 值不可变 final User u = new User(); u.name
final int[] abc = new int[3]; 数组指向的数组空间地址不可变 但是空间中对象是可变的
修饰类:最终类 不能再有其他类去继承这个类 类中的方法都有自己完整的方法体(不能有抽象方法)
public final class 类名{}
修饰方法:最终方法 可以在任何类中 不能被子类重写 一定具有完整的方法体
public final void show(){}
interface:声明接口类的关键字
public interface 接口名{
一般放静态常量 可以省略final static 必须要赋值 (接口名 接口引用名 实现类对象 可以调用)
public 【final】 【static】 int age = 10;
放抽象方法 省略了abstract
public 【abstract】 void show();
8.0默认方法 需要有完整方法体
public default void show(){
}
8.0静态方法 需要有完整方法体 (只能被接口名调用)
public static void show(){
}
9.0以后 私有方法 有完整方法体
private void show(){
}
}
static:静态
修饰成员变量和成员方法
1.原文件编译时就加载—> 注意相互调用的顺序
2.由static修饰的成员变量 所有对象共享 该变量是保存在方法区中的元数据区中的
作用:可以避免类实例化的限制—>可以通过类名直接调用
注意:
1.静态变量与静态变量的互相调用 有顺序性 静态方法和静态方法的互相调用 没有顺序性
2.由static修饰的方法中 不能有this关键字
3.静态方法可以调用其他静态方法及静态成员变量 没有顺序性
4.普通方法可以调用静态方法和静态变量
5.静态方法可以调用普通方法 需要new本类对象 通过对象调用普通方法
extends 继承 implements 实现 instanceof 判定类(boolean)
this 本类的对象 super父类对象
public protected (default) private
代码块:
1.普通代码块{} 例如: if(){} while(){}
2.构造代码块 在类中使用{} 优先于构造方法执行 可以有多个 顺序执行
3.静态代码块static{} 调用本类静态资源前执行 优先于构造代码块
**通过类名直接调用静态资源--》加载静态变量 执行静态代码块
静态变量和静态代码块有先后顺序(静态方法没有顺序)
**new对象时 先执行静态代码块 才执行构造代码块 再执行构造方法
父类静态代码块
静态代码块
父类构造代码块
父类无参构造方法
构造代码块
无参构造方法
先找main() 没有就报错
找到main()后 再观察是否有静态块
有静态块 先执行静态块 执行完后再走main()内后续的代码
4.同步代码块:多线程
猜数字 人机猜拳 银行小程序 商品小程序 学员小程序 快速录入 购票系统 五子棋