`
啸笑天
  • 浏览: 3461327 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

java静态内部类和非静态内部类,及他们在外部的定义

    博客分类:
  • java
阅读更多

接口: 声明在接口中的属性自动成为public static final

声明在接口中的方法自动成为public

声明在接口中的类自动成为public static 如果你不需要内部类对象与其外围类对象之间有联系,那你可以将内部类声明为static。这通常称为嵌套类(nested class)。

想要理解static应用于内部类时的含义,你就必须记住,普通的内部类对象隐含地保存了一个引用,指向创建它的外围类对象。然而,当内部类是static的时,就不是这样了。嵌套类意味着: 1. 要创建嵌套类的对象,并不需要其外围类的对象。 2. 不能从嵌套类的对象中访问非静态的外围类对象。 public class Z1 { private static int i = 1; private int j = 10; public static void outer_f1() { } public void outer_f2() { } // 静态内部类可以用public,protected,private修饰 // 静态内部类中可以定义静态或者非静态的成员 static class Inner { static int inner_i = 100; int inner_j = 200; static void inner_f1() { //静态内部类只能访问外部类的静态成员(包括静态变量和静态方法) System.out.println("Outer.i" + i); outer_f1(); } void inner_f2() { // 静态内部类不能访问外部类的非静态成员(包括非静态变量和非静态方法) // System.out.println("Outer.i"+j); // outer_f2(); System.out.println("非静态方法"); } } class Innerz { int inner_j = 200; void inner_f2() { // 静态内部类不能访问外部类的非静态成员(包括非静态变量和非静态方法) // System.out.println("Outer.i"+j); // outer_f2(); System.out.println("非静态累非静态方法"); } } public void outer_f3() { // 外部类访问内部类的静态成员:内部类.静态成员 System.out.println(Inner.inner_i); Inner.inner_f1(); // 外部类访问内部类的非静态成员:实例化内部类即可 Inner inner = new Inner(); inner.inner_f2(); } public static void main(String[] args) { new Z1().outer_f3(); Z1.Inner z=new Z1.Inner(); z.inner_f2(); Z1 z1=new Z1(); Z1.Innerz zz=z1.new Innerz(); zz.inner_f2(); } } 生成一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别。静态内部类的对象可以直接生成:Outer.Inner in = new Outer.Inner();而不需要通过生成外部类对象来生成。这样实际上使静态内部类成为了一个顶级类(正常情况下,你不能在接口内部放置任何代码,但嵌套类可以作为接口的一部分,因为它是static 的。只是将嵌套类置于接口的命名空间内,这并不违反接口的规则)

分享到:
评论

相关推荐

    java静态内部类(嵌套类)

    5. **静态方法调用**:在静态内部类中可以直接访问外部类的静态方法和变量,但是无法直接访问非静态成员。 6. **非静态方法调用限制**:如果需要访问外部类的非静态方法或变量,则必须通过外部类的对象引用来进行...

    java 静态内部类的使用规范

    Java语言中的静态内部类,也称为嵌套类,是内部类的一种特殊形式,它与非静态内部类(也称为成员内部类)相比有着独特的特点和使用场景。在深入探讨其使用规范之前,我们先理解静态内部类的基本概念。 静态内部类不...

    深入浅析Java中Static Class及静态内部类和非静态内部类的不同

    Java中的静态内部类(Static Class),也称为嵌套静态类,是Java语言提供的一种独特机制,它允许我们在一个外部类内部定义一个静态的类。这种类的声明前面带有`static`关键字,与普通的内部类(非静态内部类)有所...

    Java 深入理解嵌套类和内部类

    非静态嵌套类可以分为三种:在一个类中直接定义的内部类、在一个方法中定义的内部类和匿名内部类。匿名内部类是指没有名字的内部类,通常用于实现某个接口或继承某个类。 四、在外部类中定义内部类 在外部类中定义...

    静态内部类

    2. **访问限制**:静态内部类只能访问外部类的静态成员(包括变量和方法),而不能访问外部类的非静态成员。这是因为静态内部类并不依赖于外部类的实例,因此不能访问非静态成员。 3. **命名空间**:静态内部类和...

    java代码笔记2010-06-01:Java内部类 静态内部类 局部内部类 明明内部类;StringBuffer reverse的使用;

    内部类可以分为四种类型:静态内部类、成员内部类(非静态内部类)、局部内部类和匿名内部类。 1. **静态内部类**: 静态内部类与普通的成员内部类不同,它不持有对外部类的引用。因此,可以像其他静态成员一样,...

    浅谈内部类与静态内部类的应用

    与普通成员内部类不同,静态内部类不持有对外部类的引用,因此不能直接访问外部类的非静态成员。静态内部类需要通过外部类名.静态内部类名的方式来创建对象,这与访问任何其他静态成员的方式相同。这种特性使得静态...

    Java中的静态内部类详解及代码示例

    静态内部类不能访问外部类的非静态成员和非静态方法。 静态内部类与其它内部类的区别在于非静态内部类在编译完成之后会隐含地保存一个引用,该引用是指向创建它的外部类,但是静态内部类却没有。静态内部类只是嵌套...

    java内部类总结(含概念和实例)

    * 静态内部类不能访问外部类的非静态成员 匿名内部类的特点: * 匿名内部类是指没有名字的内部类 * 匿名内部类通常用在创建实例时使用 * 匿名内部类可以访问外部类的所有成员 在 Java 中,内部类是一种非常重要的...

    从零开始学JAVA第12章_内部类.ppt

    非静态内部类是指定义在另一个类的非静态成员中的类。非静态内部类可以访问外部类的成员变量和成员方法,同时也可以被外部类访问。在外部类中访问内部类可以使用内部类对象来调用内部类的成员变量和成员方法。在外部...

    Java语法总结 - 内部类

    静态嵌套类不能访问外部类的非静态成员变量和方法,但是可以访问外部类的静态成员变量和方法。 方法内部类 方法内部类是指定义在外部类的方法中的内部类。方法内部类可以访问外部类的所有成员变量和方法,包括私有...

    内部类的相关知识-静态内部类,匿名内部类……

    1. **成员内部类**:定义在类中的内部类。 2. **静态内部类**:使用 `static` 关键字修饰的成员内部类。 3. **局部内部类**:定义在方法或代码块中的内部类。 4. **匿名内部类**:没有名称的局部内部类。 #### 二、...

    java内部类详解

    它们不会隐含持有外部类的引用,因此无法直接访问外部类的非静态成员。静态内部类可以看作是外部类的静态成员,与外部类的其他静态成员共享相同的命名空间。创建静态内部类的实例时,无需先创建外部类的实例,而是...

    java中内部类与外部类的学习资料.docx

    Java中的内部类与外部类是Java面向对象编程中一个重要的特性,它允许我们在一个类的内部定义另一个类。这种设计模式提供了更高级别的封装,并且能够实现一些特殊的功能,如匿名内部类、事件处理等。以下是对内部类与...

    Java SE 静态内部类的使用(csdn)————程序.pdf

    在`Outer10`类中,有一个`Inner10`的静态内部类,它有一个`say`方法,这个方法展示了如何访问外部类的静态和非静态成员。`say`方法中,`name`变量被内部类和外部类共享,但访问外部类的`name`变量时,需要通过`Outer...

    JAVA 内部类 PPT

    - **实例内部类**:在类的内部定义的非静态类称为实例内部类。实例内部类的实例需要依赖于外部类的实例,即创建实例内部类对象前必须先创建外部类对象。 - **静态内部类**:静态内部类与实例内部类的区别在于,...

    Java内部类总结

    Java内部类主要包括以下几种类型:成员内部类(非静态内部类)、静态内部类(也称为静态嵌套类)、局部内部类和匿名内部类。 - **成员内部类**:这种类型的内部类是定义在外部类的一个成员位置上,它可以访问外部类...

    java 成员内部类的使用规范

    Java成员内部类是一种在类内部定义的类,它可以访问外部类的所有成员,包括私有成员。成员内部类的使用在Java编程中具有独特的价值,它能够帮助我们更好地封装代码,提高代码的组织性和可读性。以下是关于Java成员...

    JAVA内部类总结

    4. **内部类访问外部类**:非静态成员内部类可以通过`this`关键字访问外部类中的成员变量和方法。如果外部类的方法中存在同名变量,则可以通过`外部类.this.变量`的方式访问外部类的成员变量。 #### 三、静态成员...

    Java内部类(DOC)

    这意味着静态成员类并不依赖于外部类的实例化就可以独立存在,并且可以访问外部类的所有静态成员变量和静态方法,但不能直接访问外部类的非静态成员变量和方法。 **2.1 静态成员类的特性** - **访问控制**:静态...

Global site tag (gtag.js) - Google Analytics