访问控制权限 final static

1.访问权限控制

同一个类 同一个包的类 不同包中的子类 其他包中的类
public
protected
default
private

2.final关键字

final关键字可以用在成员变量上、用在参数上、用在方法上、用在类上。

2.1 final成员变量

final修饰成员变量要分为两种情况,一种是修饰基本数据类型,另一种是修饰引用数据类型。

①当修饰基本数据类型时:会使数值不变

②当修饰引用数据类型时:会使引用恒定不变,一旦引用初始化指定一个对象,就无法将把它改为指定为另一个对象

class Value{
    int i;

    public Value(int i){
        this.i = i;
    }
}

public class FinalTest {
    final Value v3 = new Value(3);

    public static void main(String[] args) {
        FinalTest test = new FinalTest();
        test.v3.i++;
        test.v3 = new Value(10);   // error:无法指定为另一个对象
    }
}

2.2 fianl参数

Java允许在参数列表中以声明的方式将参数指明为final,一旦声明为final只可以读该参数,不能修改该参数

public void test1(final Value value){
        value = new Value(10);   // error:无法修改参数
}

2.3 final方法

final修饰方法时,能够确保在继承中使方法行为保持不变,并且不会被覆盖

class Value{
    int i;

    public Value(int i){
        this.i = i;
    }

    public final void f(){
        System.out.println("f");
    }
}
class ValueSon extends Value{

    public ValueSon(int i) {
        super(i);
    }

    // error: 'f()' cannot override 'f()' in 'Value'; overridden method is final
    public final void f(){

    }
}

2.4 final类

final修饰类时,表示该类不能被继承

final class Value{
    int i;
}
// error:Cannot inherit from final 'Value
class ValueSon extends Value{
    
}

3.static关键字

static关键字可以修饰成员变量和成员方法、修饰代码块、修饰内部类

3.1 修饰成员变量和成员方法

被 static 修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享,可以并且建议通过类名调用。

public class StaticTest {
    
    // 静态成员变量
    static int i;
    
    // 静态成员方法
    public static void f(){
        
    }
}

3.2 修饰代码块

静态代码块定义在类中方法外, 静态代码块在非静态代码块之前执行(静态代码块 —> 非静态代码块 —> 构造方法)。 该类不管创建多少对象,静态代码块只执行一次

public class StaticTest {

    static {
        System.out.println("静态代码块");
    }
    {
        System.out.println("非静态代码块");
    }

    public StaticTest(){
        System.out.println("构造器");
    }
    
    public static void main(String[] args) {
        new StaticTest();
    }
}

image-20220720101059860

3.3 修饰内部类

静态类内部不可以访问外部类的实例成员,只能访问外部类的类成员,即使是静态内部类的实例方法也不能访问外部类的实例成员,只能访问外部类的静态成员

posted @ 2022-07-20 10:32  Lyfzzz  阅读(29)  评论(0)    收藏  举报