java修饰符

    xiaoxiao2022-07-02  106

    1、访问控制符

    用来修饰类成员(方法、构造器、成员变量)

    修饰符本类本包本包下的子类不同包、非子类public√√√√protected√√√ default(默认)√√  private(私有的)√   

    注:

    1)、访问控制修饰符可以用来修饰类 2)、修饰外部类,只能用public或默认(default)  3)、修饰内部类,都可以用

     

    2、非访问修饰符

    static,用来修饰类方法和类变量。

    final,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

    abstract,用来创建抽象类和抽象方法。

    synchronized和volatile主要用于线程的编程。

    1、static

    static变量是属于类的变量,存储在方法区中,而不再堆中,一个类的static变量只有“一份”,不随对象的创建而创建

    静态变量:static修饰的成员变量

    static只能修饰成员变量,不能修饰局部变量

    普通成员变量是属于对象的,所以也把这些成员变量叫做实例变量

    因为static变量是属于类,不是属于对象,所以不会随着对象的创建而改变,调用static变量,通过类名直接调用

    静态方法:static修饰的方法

    调用成员方法时,会传递一个隐式的参数(调用这个方法的对象),在成员方法中就存在了这个对象,用this表示,所以在一个类中,在成员方法中可以直接调用其他成员方法。

    成员方法是属于对象的,要调用必须通过对象调用,调用static修饰的静态方法时,不会像此方法传递隐式的对象,所以在静态方法中,不可以使用this,而是通过类名直接调用方法

    静态代码块:static修饰的代码块

    静态代码块属于类,在类加载期间执行(在进入main方法之前),且只执行一次

    静态代码块通常用来在软件中加载静态资源。静态资源:可以供多个对象共用的资源

    注:

    1)、成员变量的默认初始化会随着类的加载而执行,且只执行一次。 

    2)、如果要调用一个类的普通方法:需要先创建对象,在通过对象调用这个方法

    3)、静态方法不能调用非静态方法,因为静态方法内部没有this、super

    4)、非静态方法叫做实例方法,非静态的成员变量叫做实例变量

     

    2、final:不可变的

    final修饰变量:     final int a = 1; //a的值不可变,相当于一个静态常量final修饰方法:     public final void test(){} //方法不可变,也就是方法不能被重写final修饰类:     public final class 类名{} //类不能被改变,就是说类不能被继承

     

    注:

    static final 修饰静态常量:是属于类的,会在编译期被替代

    命名规则:变量单词全部大写,多个但词之间用下划线隔开

     

    3、abstract:抽象类

    方法前+ abstract:表名这个方法值声明,不实现(没有方法体)。

    例:public abstract void step();

    没有方法体和方法体为空是不一样的

    抽象类是基于父类的,抽象类一定是一个父类,为子类提供公共的模板(数据,普通方法)(子类共有的属性)

    如果一个类中有抽象方法,这个类一定是抽象类。

     

    抽象:abstract

    可以修饰方法,类

    抽象类中有构造器,不可以实例化

    abstract和final不可以同时修饰一个类,即不可以用final修饰一个抽象类

    如果一个类继承了抽象类,那么此类必须对父类中的所有抽象方法进行重写,否则该子类也会变成一个抽象类  

    接口:interface 接口中的成员:抽象方法,没有普通方法;静态常量 接口中没有构造器 语法:     public interface 接口名{         //静态常量         //抽象方法     } 在接口中定义的常量,默认提供public static final 修饰符 在接口中的方法,默认提供了public abstract 修饰符

    实现方式:要有类对接口中的抽象方法进行重写(实现).

    关键字implements: 类 implements 接口:这个类叫做实现类 表示:类会对接口中的所有抽象类进行实现(重写)。 如果类对接口中的抽象方法没有进行全部重写,这个类就变成了抽象类 --- 类似于抽象类

    类的继承特点:单继承 接口的特点:多实现,一个类可以实现多个接口 A implements B,C{}

     

    接口的继承: interface A B C A extends B B extends C 接口的继承可以是多继承 A extends B,C

    接口当中的多继承,必须它们全是接口 A:抽象类   B,C:接口 A extends B,C -- ×

    接口的实现,类的继承可以同时出现 必须是先继承,再实现(继承在前,实现在后)

    类A,抽象类B,接口C,D A extends B implements C A extends B implements C,D

    接口,抽象类不能实例化。

     

    接口的继承: interface A B C A extends B B extends C 接口的继承可以是多继承 A extends B,C

    接口当中的多继承,必须它们全是接口 A:抽象类   B,C:接口 A extends B,C -- ×

    接口的实现,类的继承可以同时出现 必须是先继承,再实现(继承在前,实现在后)

    类A,抽象类B,接口C,D A extends B implements C A extends B implements C,D

    接口,抽象类不能实例化。

     

    接口与抽象类的区别: 1、抽象类中可以有普通方法,但是接口中只能有抽象方法 2、抽象类中可以有常量,可以有变量,但是接口中只能有静态常量 3、抽象类中有构造方法,接口中没有构造方法 4、接口可以多继承,但是类的继承只能是单继承  

     

     

     

    最新回复(0)