2021-04-18 10:57  阅读(65)
文章分类:Java 基础教程 文章标签:JavaJava 教程
©  原文作者:w3cschool 原文地址:https://www.w3cschool.cn/java/java-class-instance.html

Java面向对象设计 - Java静态内部类

静态成员类不是内部类

在另一个类的主体中定义的成员类可以声明为静态。

例子

以下代码声明了顶级类A和静态成员类B:

    class A {
      // Static member class
      public static class B {
        // Body for class B goes here
      }
    }
    

注意

静态成员类不是内部类。它被认为是一个顶级类。

静态成员类也称为嵌套顶级类。

A类的实例和B类的实例可以独立存在,因为它们都是顶级类。

静态成员类可以声明为public,protected,package-level或private,以限制其在其封闭类之外的可访问性。

使用静态成员类有两个好处:

  • 静态成员类可以访问其包含类的静态成员,包括私有静态成员。
  • 一个包通过提供一个命名空间,就像一个顶级类的容器。具有静态成员类的顶级类提供了额外的命名空间层。

静态成员类是其封闭顶级类的直接成员,而不是包的成员。

静态成员类的对象的创建方式与使用new运算符创建顶级类的对象的方式相同。要创建一个B类的对象,你写

    A.B bReference = new A.B();
    

由于类B的简单名称在类A中的范围内,因此我们可以使用其简单名称在类A中创建其对象

    B  bReference2 = new B(); // This  statement appears inside class  A  code
    

我们还可以通过导入com.java2s.innerclasses.A.B类,使用A类之外的简单名称B.

例2

下面的代码显示了如何使用静态内部类。

    public class Main {
      public static void main(String[] args) {
        Car.Tire m = new Car.Tire(17);
        Car.Tire m2 = new Car.Tire(19);
    
        Car.Keyboard k = new Car.Keyboard(122);
        Car.Keyboard k1 = new Car.Keyboard(142);
    
        System.out.println(m);
        System.out.println(m2);
        System.out.println(k);
        System.out.println(k1);
      }
    }
    class Car {
      // Static member class - Monitor
      public static class Tire {
        private int size;
    
        public Tire(int size) {
          this.size = size;
        }
    
        public String toString() {
          return "Monitor   - Size:" + this.size + "  inch";
        }
      }
    
      // Static member class - Keyboard
      public static class Keyboard {
        private int keys;
    
        public Keyboard(int keys) {
          this.keys = keys;
        }
    
        public String toString() {
          return "Keyboard  - Keys:" + this.keys;
        }
      }
    }
    

上面的代码生成以下结果。

2021041810518_1.png

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Java 静态对象类
上一篇
Java 内部类类型
下一篇
Java 内部类对象