Java修饰符
Java修饰符主要分为两种:
- 1.访问修饰符
- 2.非访问修饰符
修饰符用来定义类、方法、变量,通常放在语句最前面。
非访问控制修饰符
static修饰符:修饰类变量和方法
final修饰符:修饰类、方法和变量
abstract修饰符:用来创建抽象类和抽象方法
static 修饰符
1.static修饰的成员变量不属于对象的数据结构;
2.static变量是属于类的变量,通常可以通过类名来引用static成员;
3. static成员变量和类的信息一起存储在方法区,而不是堆中;
4. 一个类的static成员变量只有一个;
5. static块----类的代码块
- 在类加载期间执行的代码块,只执行一次,用来加载静态资源;
- 类加载时,运行代码块,在创建对象之前;
Class Cat(){
Static{
System.out.println("静态代码块");
}
public Foo(){
System.out.println("Foo()");
}
}
Foo f=new Foo();
//运行结果:
// 静态代码块
//Foo()
final 修饰符
1.final修饰的成员变量不可变,且必须初始化;
- 构造函数中初始化
- 声明的同时初始化
2.final可以修饰局部变量,使用前要初始化;
3. final修饰的方法不可以被重写,防止子类在定义新方法时造成的“不经意”重写;
4.final修饰的类不可以被继承,保护类不被继承修改,控制滥用继承对系统的危害;
public class Test{
final int value = 1;
// 下面是声明常量的实例
public static final int X = 6;
static final String NAME = "Lucy";
public void changeValue(){
value = 2; //将输出一个错误
}
}
abstract 修饰符
1.abstract修饰的方法为抽象方法,抽象方法只有方法的定义,没有方法体实现,用分号结尾;
2.包含抽象方法的类,应该用abstract关键字修饰为抽象类;
3.抽象类不能用来实例化对象,而声明抽象类的唯一目的是为了将来对该类进行扩充;
4.如果一个非抽象类继承了抽象类,必须重写其抽象方法;
5.抽象类可以包含抽象方法和非抽象方法。
//抽象类
abstract class Animal{
private String name;
private String sex;
public abstract void goFast(); //抽象方法
public abstract void allColor();
}