一、请问java的修饰符有哪些?
答:抽象的(abstract),静态的(static),公共的(public),受保护的(protected),私有的(private),同步的(synchronized),本地的(native),暂时的(transient),易失的(volatile),不可改变的(final).
二、请问访问控制修饰符有哪些?
答:①公开级别:public,对外公开。
②受保护级别:protected,对子类和同一个包中的类公开。
③默认级别:没有访问控制修饰符,向同一个包中的类公开。
④私有级别:private,只有本类可以访问。
三、请问abstrace修饰符可以修饰什么?
答:修饰类,表示抽象类,抽象类不能被实例化,即不允许创建抽象类本身的实例。
修饰方法,表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能,但不提供具体的实现。
四、请问使用abstract修饰符应该注意什么?
答:①抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类。
②没有抽象静态方法,static和abstract关键字不能共用。
③抽象类中可以有非抽象的构造方法,创建子类的实例时可能会调用这些构造方法。抽象类不能被实例化,然而可以创建一个引用变量,其类型是一个抽象类,并让它引用非抽象的子类的一个实例。
④抽象类及抽象方法不能被final修饰符修饰。因为抽象类只有允许创建其子类,它的抽象方法才能被实现,并且只有它的具体子类才能被实例化,而用final修饰的类不允许拥有子类,用final修饰的方法不允许被子类覆盖。
⑤抽象方法不能被private修饰符修饰。
五、请问final修饰符可以修饰什么?
答:修饰类,不能被继承,没有子类;String类就被final修饰。
修饰方法,不能被子类的方法覆盖;
修饰基本变量,表示常量,只能被赋值一次。final变量必须被显式初始化。
修饰引用变量,那么该变量只能始终引用一个对象,但可以改变对象的内容。
六、请问static修饰符可以修饰什么?
答:修饰成员变量表示静态变量,可以直接通过类名来访问。
修饰成员方法表示静态方法,可以直接通过类名来访问。
修饰代码块表示静态代码块,当java虚拟机加载类的时,就会执行该代码块。
七、请问静态变量和实例变量有什么区别?
答:静态变量在内存中只有一个备份,运行时java虚拟机只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配,可以直接通过类名访问静态变量。
实例变量,每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个备份,互不影响。