- final 关键字:
固定值,方法,类 。
final修饰的成员变量只能被赋值一次;
两种赋值方式:直接 =,用构造器。 - static 关键字:
静态属于类不属于对象;
static修饰的成员变量可作为对象的共享数据,可被类名.直接调用;
静态中不能调用非静态;
多态中,编译都看父类,对非静态方法,运行看子类的重写方法,对静态方法,运行看父类的静态方法
定义静态常量:public static final 数据类型 变量名 = 值
- 匿名对象:
没有引用变量,只能使用一次
可作为参数 - 内部类:
内部类可以直接使用外部类成员,反之不行。文件名Outer$Inner
调用内部类方法的格式:
外部类名.内部类名 变量名 = new 外部类名().new 内部类名();
调用:变量.内部类方法
Outer.Inner in = new Outer().new Inner(); in.inner();
局部内部类:
将一个类定义到方法中,文件名Outer$1Inner
调用方式:在外部类方法中创建内部类对象,进行访问
匿名内部类:
简化问题:把定义实现类,重写抽象方法,建立实现类对象合为一步完成
格式:new 接口或者父类(){重写抽象方法};
new Smoking(){
public void smoking(){
System.out.println("人在吸烟")
}
};
上面的代码等同于子类对象
6. 包的声明和访问
7. 权限修饰符
public 最大权限,不同包中的无关类也能访问
protected 不同包的中,只能在子类里面用,在测试类中不能用
default 同一包中访问
private 同一类中用
8. 代码块
静态代码块,只执行一次,最先执行;static {}
构造代码块,new 一次执行一次,第二执行; {}
构造方法,new一次执行一次,最后执行;
其他:assigned赋值
常量的名字要求全大写,两词之间下划线连接
Scanner sc = new Scanner(System.in);
sc.next();
sc.nextInt();