static修饰内部类

创建内容类的方式通过外部类的实例对象来创建

public class AA {
     int a =1;
     class BB {
          int b=3 ;
     }
     public static void main(String[] args) {
          AA a =new AA();
          BB b=a.new BB();
          System.out.println(a.a);
          System.out.println(b.b);
     }
}


利用static修饰后,可以直接创建

public class AA {
     int a =1;
     static class BB {
          int b=3 ;
     }
     public static void main(String[] args) {
          AA a =new AA();
          BB b=new AA.BB();
          System.out.println(a.a);
          System.out.println(b.b);
     }
}



### C++ 中 `static` 关键字修饰类函数的作用与用法 在 C++ 中,当使用 `static` 修饰符来定义类中的成员函数时,该函数被称为静态成员函数。静态成员函数具有以下几个特点: #### 特性 1. **不依赖于具体对象实例** 静态成员函数属于整个类而非单个对象,因此它可以通过类名直接调用,而不需要创建类的对象实例[^2]。 2. **无法访问非静态成员变量或方法** 静态成员函数内部不能直接访问类的非静态成员变量或非静态成员函数,因为这些成员需要通过特定的对象实例才能被访问[^4]。 3. **存储位置特殊** 静态成员函数并不随对象的数量增加而重复存在,它们只有一份拷贝并存储在程序的静态区中。 #### 使用场景 - 当某些操作逻辑仅涉及类级别的数据处理而不需依赖任何对象的状态时,可以将其设计为静态成员函数。 - 提供工具性质的方法,比如工厂模式下的对象创建方法或者辅助计算等功能。 以下是实现的一个简单例子展示如何定义和使用静态成员函数: ```cpp class MyClass { public: static void myStaticFunction(); // 声明静态成员函数 }; void MyClass::myStaticFunction() { // 定义静态成员函数 std::cout << "This is a static function." << std::endl; } int main() { MyClass::myStaticFunction(); // 调用静态成员函数无需实例化对象 } ``` --- ### Java 中 `static` 关键字修饰类函数的作用与用法 Java 对象模型也支持利用 `static` 来标记类内的成员函数作为静态成员函数。其行为特征如下: #### 特性 1. **独立于对象的存在形式** 和 C++ 类似,在 Java 中,静态成员函数同样归属于整个类而不是单独的对象实体,允许开发者借助类名称直接触发执行过程。 2. **受限的操作范围** 同样由于缺乏关联至特定对象上下文中运行的能力,所以此类函数只能操纵其他同属静态范畴的数据项或是再次调用别的静态方法。 #### 应用场合 - 构建通用型算法接口,例如数值运算、字符串拼接等基础服务提供者角色的功能模块; - 实现单一职责原则下集中管理资源分配/释放机制的任务调度器组件等等。 下面给出一段代码片段用于阐明上述概念的实际应用情况: ```java public class UtilityClass { public static String concatenateStrings(String str1, String str2){ return str1 + str2; } public static void displayMessage(){ System.out.println("Hello from Static Method!"); } } // Main Class to Test Above Methods Without Creating Object Instance. public class Main{ public static void main(String[] args){ String result = UtilityClass.concatenateStrings("Good ", "Morning"); System.out.println(result); UtilityClass.displayMessage(); } } ``` --- ### 总结对比 无论是 C++ 还是 Java 编程语言环境里,“static”关键字赋予了程序员一种强有力的手段去构建那些超越个体实例界限之上运作的服务单元——即所谓的“类级别”的功能性扩展途径。这种技术不仅有助于减少不必要的内存消耗同时也简化了许多跨多个不同类型的交互流程的设计复杂度][^[^24]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值