美文网首页
梳理java修饰符

梳理java修饰符

作者: f155b8f6e0ac | 来源:发表于2019-12-06 18:07 被阅读0次

    真的是很久不碰代码,很多基础知识的特点都忘求了~~,今天借助这篇文章,梳理一下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修饰符

          本文链接:https://www.haomeiwen.com/subject/cyiegctx.html