zoukankan      html  css  js  c++  java
  • java基础(14)---修饰符

    修饰符:final 、static、public、protected、private、default。

    一、final(不能修改)

    使用final修饰变量定义:该变量一旦被初始化之后就不允许再被修改。

    final修饰引用类型:一旦为其赋值,将不能够重新用来引用另一个对象,不过可以修改其引用对象的成员 变量。

    final修饰成员变量:其值不能改变,必须进行初始化。

    public class YourClassNameHere {
      final String color;   // 如果后面没有在构造函数中初始化,则错误。
      final String color1 = "红色";  //正确,进行显示初始化
      String color2 = "蓝色";
      public YourClassNameHere(String color){
        this.color = color;
      }
      public static void main(String[] args) {
        String color = "黄色";
        YourClassNameHere test = new YourClassNameHere(color);
        System.out.println(test.color);
        String color1 = "绿色";
        YourClassNameHere test1 = new YourClassNameHere(color1);
        System.out.println(test1.color);
        System.out.println(test1.color1);
        
        // test1.color = "改变颜色"; //错误,不能修改final变量
        test1.color2 = "改变颜色2";
        System.out.println(test1.color2);
        }
    }

    final修饰的局部变量:

    final修饰局部变量可以只声明不初始化,但是被修饰的局部变量一旦被赋值后就不能进行修改了。如果在创建时没有对其赋值,那么在使用前还是可以对其赋值的。

    final修饰的方法:

    被修饰的方法能被该类的子类所继承,但不能重写,这样保护了父类某些特殊的数据。

    //重写父类方法,但没有用final修饰
    class bike
    {
        String color = "黄色";
        
        public void getMes()
        {
            System.out.println("父类的成员变量color" + color);
        }
    }
    public class test extends bike
    {
        String color = "绿色";
    
        //重写父类方法
        public void getMes()
        {
            System.out.println("子类的成员变量color" + color);
        }
        public static void main(String[] args)
        {
            test t = new test();
            t.getMes();
            
        }
    }    
    //重写父类方法,用final修饰
    class bike
    {
        String color = "黄色";
        
        public final void getMes()
        {
            System.out.println("父类的成员变量color" + color);
        }
    }
    public class test extends bike
    {
        String color = "绿色";
    
        //不能重写父类方法
    /*
        public void getMes()
        {
            System.out.println("子类的成员变量color" + color);
        }
    */
        public static void main(String[] args)
        {
            test t = new test();
            t.getMes();
            
        }
    }    

    final修饰类:说明该类不能有子类,即该类不能被继承,该类的成员变量在这里不起作用。

    final修饰类里的方法默认被修饰为final。

    二、static(只能存一份)

    静态:在内存中只能有一份。

    静态变量:只能存在一份,它属于类,不属于对象,不随着对象的创建而建立副本。如果不想在创建对象的时候就需要知道一些相关信息,那么就声明为static类型。

    public class test
    {
        static String color = "绿色";
        
        public test(String color)
        {
            this color += color;
        }
    
        public static void main(String[] args)
        {
            test t1 = new test("黄色");
            test t2 = new test("红色");
    
            System.out.println(t1.color);  // 绿色黄色红色
            System.out.println(t2.color);  //绿色黄色红色
            System.out.println(color);  //绿色黄色红色
        }
    }

    静态变量的访问:

    •   类名.静态成员变量名称
    •   静态成员变量名称

    三、静态常量 static final 

    静态常量:唯一的、不可变的、只存在一份的数据。系统不会分配默认值,必须初始化。

    • static:属于类,随着类的创建而创建。
    • final:值不能改变。
    • static和final没有先后之分。

     四、public、private、default、protected

    public:声明被它修饰的成员变量为公共类型,这个成员变量在任何包里都能访问,包括子类也能访问到。

    private:除了本类外任何类都不能访问到这个成员变量,具有很好的保护性。

    default:如果不给成员变量添加任何修饰符,就表示这个成员变量被修饰为default类型。在同一个包里的类或子类是能够访问的,相当于public类型。但是在不同包里的类或子类没有继承该成员变量,是访问不到它的。

      如果子类在另一个包里,而成员变量或方法没有添加修饰符,子类是访问不到的。

    protected:在同一个包里和public类型是一样的,可访问到。如果在不同包里的protected类型的成员变量就只能通过子类来访问。子类可以访问父类protected权限的成员是指集成到子类中后在子类是可见的,而非子类内部建立一个父类的实例后该实例可以访问自身的protected成员。

    五、abstract抽象

    与final含义完全相反。抽象类里最少要含有一个抽象方法,让子类去实现这个抽象方法

  • 相关阅读:
    JDBC_批量处理语句提高处理速度
    JDBC_获取插入记录的主键值
    JDBC_获取数据库连接
    SmartSprites 智能批量合并 CSS 雪碧图
    移动前端开发技巧摘录
    将已有项目提交到github/从github上pull到本地
    网页设计创新式布局与交互
    如何打好前端游击战
    jQuery Mobile十大常用技巧
    Javascript图片的懒加载与预加载
  • 原文地址:https://www.cnblogs.com/Lee-yl/p/11716324.html
Copyright © 2011-2022 走看看