java之修饰符

修饰符分为:访问类型修饰符和非访问类型修饰符

访问类型修饰符——public

非访问类型修饰符——static(静态),final,abstract(抽象的)

 

static(静态)修饰变量,则此变量在内存中只保存一份,因此不常变动的数据适合声明为静态的。

static修饰函数时,此函数无法访问到函数外定义的非static类型的全局变量。(意思只能访问函数定义外的static定义的全局变量)

类加载到内存的时候,最先加载进来的部分是被static修饰的静态成员(因此可以解释上一点为啥访问不到),所以static修饰的函数进入内存时,没有被修饰的变量并没有进入内存,所以无法访问到函数外非static类型的变量

静态成员的访问不需要依赖对象,可以直接通过类名来访问

静态代码块的用法(很重要)

注意:一般的非静态方法,基于面向对象的思想,一般不会修饰为静态方法,而工具类方法,一般就是修饰的静态方法

 

package com.my.packge5;

public class Student {
    /*
    姓名
     */
    private static String name;
    /*
  性别
   */
    private static String gender;
    /*
    年龄
    */
    private static int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public Student(String name, String gender, int age){
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
    public Student(){
    }

    @Override
    public String toString() {
        return "学生信息{" +
                "姓名='" + name + '\'' +
                ", 性别='" + gender + '\'' +
                ", 年龄=" + age +
                '}';
    }
}

 

package com.my.packge5;

public class Tester {
    public static void main(String[] args) {
         Student student1 = new Student("张三","男",20);
         Student student2 = new Student("李四","男",22);
        System.out.println(student1);
        System.out.println(student2);
        Tester tes = new Tester();
        //非静态函数是通过对象调用方法
        tes.sayHi();
        //用static修饰的静态函数或者静态变量,可以直接用类名调用
        Tester.sayHilou();
    }
    //非静态函数
    public void sayHi(){
        System.out.println("Hi");
    }
    //静态函数-工具方法
    public static void sayHilou(){
        System.out.println("Hi");
    }
    //静态代码块
    static {
        //一般用于做初始化工作,完成数据的初始化
        //会在main方法和普通方法执行前执行
    }
}

 

final修饰符(最终的)

被final修饰的变量,它的值不能再做修改

被final修饰的函数,不能被重写

被final修饰的类,不能被继承 

 

 

abstract(抽象的)

 

posted @ 2021-03-31 14:33  小boboa  阅读(41)  评论(0编辑  收藏  举报