梳理java修饰符

真的是很久不碰代码,很多基础知识的特点都忘求了~~,今天借助这篇文章,梳理一下JAVA语法中的修饰符

修饰符的分类

修饰符是用来修饰类,方法,变量的,通常是放在语句的最前端。修饰符分为两类:

  • 访问修饰符
  • 非访问修饰符

访问修饰符

JAVA中支持 4 类不同的访问权限,以此来保护类,变量,方法和构造方法的访问。

  1. default:在同一个包内可见。使用对象:类,方法,变量,接口。
  2. private:只在同一个类内可见。使用对象:方法,变量。注意:不能修饰类和接口
  3. public:对所有类都可见。使用对象:类,方法,变量,接口。
  4. 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中常见的非访问类修饰符有如下几种:

  1. static:用来修饰静态方法和静态变量。
  2. abstract:用来创建抽象类和抽象方法
  3. final:用来修饰类,方法和变量的。
  4. 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类是不能被继承的
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类、方法或者变量,通常放...
    代码人生sl阅读 316评论 0 1
  • 本文记录在学习Java语言过程中,对碰到的修饰符的一些疑问,在这里具体的拿出来详细学习和记录一下,以作后续参考和学...
    葛木小舍先生丶阅读 488评论 0 4
  • Java提供了很多修饰符,主要分为以下两类。 访问符修饰符 非访问修饰符修饰符用来定义类、方法或者变量,通常放在语...
    南风_001阅读 358评论 0 0
  • 正文之前 今天总算是把那个党员谈话给弄完了,三个学弟轮番跟我来聊天,讲自己的入党动机啥的,看到他们就仿佛看到了大一...
    张照博阅读 650评论 0 3
  • 一.概述 Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类、方法或者变...
    Tian_Peng阅读 255评论 0 0