权限修饰符和代码块

权限修饰符:是用来控制一个成员能够被访问的范围的。、

可以修饰成员变量、方法、构造方法、内部类。

权限修饰符的范围

权限修饰符和代码块_第1张图片

权限修饰符的使用规则:

实际开发中,一般只用private和public

  • 成员变量私有

  • 方法公开

    特例:如果方法中的代码是抽取其他方法中的共性代码,这个方法一般也私有。

    代码块

  • 局部代码块

    {
                int a=10;
            }//因为执行到这里,变量a就从内存里消失了

    构造代码块

    package oop.CodeBlock;
    
    public class Student {
        private int age;
        private String name;
        //构造代码块:
        //1.写在成员位置的代码块
        //2.作用:可以把多个构造方法中重复的代码抽取出来
        //3.执行时机:我们在创建本类对象的时候会先执行构造代码块再执行构造方法
        {
            System.out.println("开始创建对象了");
        }
    public Student(){}
        public Student(int age, String name) {
            this.age = age;
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    package oop.CodeBlock;
    
    public class CodeBlockDemo01 {
        public static void main(String[] args) {
           /* {
                int a=10;
            }*///因为执行到这里,变量a就从内存里消失了
        Student s=new Student();
        }
    }

    静态代码块

    格式:static{}

    特点:需要通过static关键字修饰,随着类的加载而加载,并且自动触发,只执行一次。

    使用场景:在类加载的时候,做一些数据初始化的时候使用。

    package oop.CodeBlockDemo02;
    
    public class Student {
        private String name;
        private int age;
    static{
        System.out.println("静态代码块执行了");
    }
        public Student() {
            System.out.println("有参构造");
        }
    
        public Student(String name, int age) {
            this.name = name;
            this.age = age;
            System.out.println("无参构造");
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }
    package oop.CodeBlockDemo02;
    
    public class Test {
        public static void main(String[] args) {
    Student s=new Student();
    Student s2=new Student("karry",24);
        }
    }
    

你可能感兴趣的:(java,jvm,开发语言)