zoukankan      html  css  js  c++  java
  • 4. static修饰符

    一、static修饰符概述

    1. static修饰的成员表明它属于这个类本身,而不属于该类的单个实例

    • 把static修饰的成员变量和方法称为类变量、类方法

    2. 不使用static修饰的成员则属于该类的单个实例,而不属于该类

    • 把不使用static修饰的成员变量和方法称为实例变量、实例方法

    笔记:static的真正作用就是区分成员变量、方法、内部类、初始化块这四种成员到底属于类本身还是属于实例

    二、调用static成员

    1. 不使用static修饰的成员,只可通过实例来调用

    2. static修饰的成员,既可通过类来调用,也可通过实例来调用,但应尽量使用类来调用static成员

    • static修饰的成员属于类本身(而不属于该类的实例),那么就不应该允许使用实例来调用static成员(实际上允许)
    • 使用该类的任何实例来调用同一个static成员都将得到相同的执行结果,这是因为static成员属于类本身,那么底层依然是使用这些实例所属的类作为调用者
    • 如果看到使用实例来调用static成员的情形,则完全可以把这种用法当成假象,将其替换成用类来调用static成员的代码

    三、静态成员不能直接访问非静态成员

      静态方法中不能使用this,因为静态方法是由类来调用的,所以在静态方法中,this将无法指向合适的对象。所以静态方法不能访问非静态(不使用static修饰的)成员,即静态成员不能直接访问非静态成员。

      类成员(包括方法、初始化块、内部类和枚举类)不能访问实例成员(包括成员变量、方法、、初始化块、内部类和枚举类),因为类成员是属于类的,类成员的作用域比实例成员的作用域更大,完全可能出现类成员已经初始化,但实例成员还不曾初始化的情况,如果允许类成员访问实例成员将会引起大量错误。

  • 相关阅读:
    string类型版本号比较
    地图
    使用libcurl显示下载进度
    欧几里德&扩展以及求解线性方程学习总结--附上poj1061解题报告
    [置顶] 两台一级域名相同二级域名不同的服务器,怎么共享session
    [源码分享] HIVE表数据量统计&邮件
    Domino 迁移到Exchange 服务器 之在Domino Server 创建用户!
    Lotus 迁移到Exchange POC 之 新建2007 服务器!
    uva 10056
    Lotus 迁移到Exchange 2010 POC 之在Exchange 2007安装Transport Suite!
  • 原文地址:https://www.cnblogs.com/xzxl/p/10906705.html
Copyright © 2011-2022 走看看