真的是很久不碰代码,很多基础知识的特点都忘求了~~,今天借助这篇文章,梳理一下JAVA语法中的修饰符
修饰符的分类
修饰符是用来修饰类,方法,变量的,通常是放在语句的最前端。修饰符分为两类:
- 访问修饰符
- 非访问修饰符
访问修饰符
JAVA中支持 4 类不同的访问权限,以此来保护类,变量,方法和构造方法的访问。
- default:在同一个包内可见。使用对象:类,方法,变量,接口。
- private:只在同一个类内可见。使用对象:方法,变量。注意:不能修饰类和接口
- public:对所有类都可见。使用对象:类,方法,变量,接口。
- protected:在同一个包内的类以及所有子类可见。使用对象:变量,方法。注意:不能修饰类
私有访问修饰符——private
- private是最严格的访问级别,被声明为private的方法,变量和构造方法只能被所属类访问。并且类和接口是不能声明为private。
- 声明为private的变量只能通过类中公共的getter和setter的方法进行访问。
公有访问修饰符——public
被声明为public的类,方法,变量和接口能够被所有的类访问
受保护的访问修饰符——protected
protected可以修饰变量,方法。不能修饰类,同时接口和接口的成员变量都不可以声明为protected
声明为protected的变量和方法,只能被同一个包中的类或者从基类继承而来的protected方法访问。
Class A {
protected boolean open(string str){
//实现细节
}
}
Class B extends A {
protected boolean open(String str){
//实现细节
}
}
如果把 open() 方法声明为 private,那么除了 A 之外的类将不能访问该方法。
如果把 open() 声明为 public,那么所有的类都能够访问该方法。
如果我们只想让该方法对其所在类的子类可见,则将该方法声明为 protected。
访问控制和继承
继承的规则:(遵循的是子类的权限不能小于父类权限)
- 父类中声明为public的方法,则子类必须声明为public
- 父类中声明为protected的方法,则子类要么声明为protected,要么声明为public。
- 父类中声明为private的方法,不能够被继承
非访问修饰符
JAVA中常见的非访问类修饰符有如下几种:
- static:用来修饰静态方法和静态变量。
- abstract:用来创建抽象类和抽象方法
- final:用来修饰类,方法和变量的。
- synchronized和volatile:用于线程的编程
static修饰符
主要用来修饰静态变量和静态方法的。注意一点:静态方法中必须要使用静态变量
abstarct修饰符
主要用来创建抽象类和抽象方法
抽象类
- 抽象类是不能够用来实例化对象的,声明抽象类的目的就是用来方便对类进行扩展
- 一个类不能同时被abstract和final修饰。
- 如果一个类包含抽象方法,那么这个类一定要声明为抽象类
- 抽象类可以包含抽象方法和非抽象方法
abstract class Caravan{
private double price;
private String model;
private String year;
public abstract void goFast(); //抽象方法
public void changeColor();
}
抽象方法
- 抽象方法是一种没有任何实现的方法,该方法的实现都是由子类去实现。
- 抽象方法不能同时声明为abstract和final
- 任何继承抽象类的子类必须实现父类的所有抽象方法,除非子类也是抽象类
- 任何一个类包含若干个抽象类的方法,那么该类必须声明为抽象类。抽象类可以不包含抽象方法
public abstract class SuperClass(){
abstract void m(){}; //抽象方法
}
public SubClass extends SuperClass(){
void m(){}; //实现抽象方法
}
final修饰符
final顾名思义就是“最终”的意思,所以被他修饰的类、变量、方法都是不能修改的
final变量
- final 修饰符通常和 static 修饰符一起使用来创建类常量
final方法
- 父类中的final方法可以被子类继承,但是不能被重写;
final类
- final类是不能被继承的
网友评论