深入理解类

Posted timeline

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解类相关的知识,希望对你有一定的参考价值。

类成员

技术分享图片

 成员修饰符的顺序 [特性] [修饰符] [核心声明]

        a)修饰符:必须放在核心声明之前,如果有多个修饰符可以是任意顺序

        b)特性:必须放在核心声明和修饰符之前,如果有多个特性可以任意顺序

技术分享图片

实例成员(是类的每个实例拥有自己各个类成员的副本)

静态字段(静态字段被类的所有实例共享)

技术分享图片

 静态函数成员

        a)静态函数成员不能访问实例成员,然而,它们能访问其他静态成员

技术分享图片

成员常量

       a)用于初始化成员常量的值在编译时必须是可计算的,而且通常是一个预定义简单类型或者由它们组成的表达式

       b)不能在成员常量声明以后给它赋值

常量与静态量

        a)成员常量表现得像静态值,它们对类的每个实例都是"可见的",而且即使没有实例也可以使用

        b)与真正的静态量不同,常量没有自己的存储位置,而是在编译时被编译器替换

        c)虽然常量成员表现得像一个静态量,但不能将常量声明为static

属性

      a)它是命名的类成员

      b)它有类型

      c)它可以被赋值和读取

      d)它是一个函数成员

      e)它不为数据存储分配空间

      f)它执行代码

属性声明和访问器

      set访问器

           a)拥有一个单独的、隐式的值参,名称为value,与属性的类型相同

           b)拥有一个返回类型void

      get访问器

           a)没有参数

           b)拥有一个与属性类型相同的返回类型

技术分享图片

技术分享图片

属性与公共字段

      a)属性是函数型成员而不是数据成员,允许你处理输入和输出,而公共字段不行

      b)属性可以只读或只写,而公共字段不行

      c)编译后的变量和编译后属性语义不同

静态属性

       a)不能访问类的实例成员,虽然它们能被实例成员访问

       b)不管类是否有实例,它们都是存在的

       c)当从外部访问时,必需使用类名,而不是实例名

实例构造函数

       a)构造函数用来初始化类实例状态

       b)如果希望能从类的外部创建类的实例,需要将类的构造函数声明为public

       c)构造函数的名称和类相同

       d)构造函数不能有返回值

技术分享图片

 

 默认构造函数

       a)如果在类的声明中没有显示地提供实例构造函数,那么编译器会提供一个隐式的默认构造函数(没有参数,方法体为空)

       b)如果你为类声明了任何构造函数,那么编译器将不会为该类定义默认构造函数

静态构造函数

       a)static构造函数初始化类级别的项,通常静态构造函数初始化类的静态属性

       b)在引用任何静态成员之前

       c)在创建类的任何实例之前

       d)静态构造函数声明中使用static关键字

       f)类只能由一个静态构造函数,而且不能带参数

       g)静态构造函数不能由访问修饰符

       h)类既可以有静态构造函数,也可以有实例构造函数

       i)静态构造函数不能访问所在类的实例成员,因此也不能使用this访问器

       j)不能从程序中显示调用静态构造函数,系统会自动调用它们

                a)类的任何实例被创建之前

                b)类的任何静态成员被引用之前

 对象初始化语句

       a)创建对象的代码必须能够访问要初始化的字段和属性

       b)初始化发生在构造函数执行之后,因此在构造函数中设置的值可能会在之后对象初始化中重置为相同或不同的值

readonly修饰符

      a)const字段只能在字段声明语句中初始化,而readonly可以在字段声明语句或者类的任何构造函数,如果时static字段,初始化必须在静态构造函数中完成

      b)const字段的值必须在编译时决定,而readonly字段的值可以在运行时决定(运行你在不同的环境或者不同的构造函数设置不同的值)

      c)const行为总是静态的,而readonly字段它可以是实例字段也可以是静态字段,它在内存中有存储位置

this关键字

     this关键字在类中使用,是对当前实例的引用,它只能被用作下面类成员的代码中

     a)实例构造函数

     b)实例方法

     c)属性和索引器的实例访问器

索引器和属性

      a)和属性一样,索引器不用分配内存来存储

      b)索引器和属性都主要用来访问其他数据成员,它们与这些成员关联,并为它们提供获取和设置访问

      c)属性通常表示单独数据成员

      d)索引器通常表示多个数据成员

      e)和属性一样,索引器可以只有一个访问器,也可以两个都有

      f)索引器总是实例成员,因此不能声明为static

声明索引器

       a)索引器没有名称,在名称的位置是关键字this

       b)参数列表在方括号中

       c)参数列表中必须至少声明一个参数

技术分享图片

访问器的访问修饰符

      a)仅当成员(属性或索引器)既有get访问器又有set访问器时,其访问器才能有访问修饰符

      b)虽然两个访问器都必须出现,但它们中只能由一个有访问修饰符

      c)访问器的访问修饰符必须比成员的访问级别有更严格的限制性

技术分享图片

 

以上是关于深入理解类的主要内容,如果未能解决你的问题,请参考以下文章

深入理解JVM虚拟机6:深入理解JVM类加载机制

深入理解spring

深入理解Java类

INN实现深入理解

深入理解Spring Cloud一(3)Nacos配置中心

深入理解Java虚拟机类加载机制