static 关键字可以修饰成员变量,被static修饰的成员变量归属于类
static关键字可以修饰成员方法;被static修饰的成员方法可以直接使用类名调用,也可以通过对象调用,建议使用类名。
非静态的方法只能通过对象才能调用
静态的方法可以通过类名直接调用,也可以通过创建对象,使用对象名进行调用。
静态方法中不能使用非静态的成员变量
在非静态的方法中可以使用静态的成员变量
静态的内容要优先与对象存在,当类加载的时候,会随着类的加载而存在于静态区中。
局部代码块分为局部代码块和构造代码块
局部代码块:在方法内的代码块成为局部代码块;方法调用时候执行
构造代码块:在类的成员变量位置的代码块成为构造代码块;创建对象时候,在构造方法的第一行和第二行之间执行
静态代码块:使用static关键字修饰的构造代码块就是静态代码块。
静态代码块与静态成员变量显示赋值时,谁在下面谁生效。也就是说按位置执行。
Final关键字
被final修饰的内容,将一直固定不变,不可修改。
final可以修饰类,final修饰的类,将不能修饰类,但是可以继承其他非final修饰的类
final可以修饰成员变量,
根据被修饰的变量得数据类型分为两种情况:
1:修饰基本数据类型:表示成员变量得值不可改变,成为了一个常量
2:修饰引用数据类型:表示成员变量得地址值不能改变,但是改变其属性值
3:final可以修饰方法,被修饰的方法不可以被重写;(子类可以继承也可以使用)
权限修饰符
修饰类的时候只能使用两种权限
public 空的,建议使用public
修饰成员变量时,4中权限都可以使用,建议使用private
修饰成员方法时,4中权限都可以使用,建议使用public
修饰构造方法时,4中权限都可以使用,建议使用public
注意事项:abstract关键字不能与static、final和private同时出现
内部类
内部类一般用于描述的事物具有包含对应的关系时。
内部类目的就是不让外界使用
根据B类在A类中的位置不同,可以分为局部内部类和成员内部类。
局部内部类: 在A类的方法中定义的类,称为局部内部类。
成员内部类:在A类成员变量位置定义的类称为成员内部类
创建对象的格式:
外部类.内部类 对象名 = new 外部类().new内部类();
匿名内部类:
当内部类定义的时候,没有给类起名字,那么这个类就必须定义在的时候指定一个父类,且立刻需要创建出来这个没名字的类的对象
特殊的格式:
父类 对象名 = new 父类(){};
格式中的大括号就是一个类,类没名字,但是有父类,父类就是其上面的那个父类;
对象名保存的是没有名子的类的对象;
这个对象名是多态形式的对象;
只要不是final修饰的类,都可以作为父类;(包括接口和抽象类)
局部内部类不能加权限修饰符