Java 嵌套静态类

Java 嵌套静态类,java,Java,所以我开始参加一些私人讲座来提高我的Java编程技能,我觉得我的老师在胡说八道(也许我错了)。在上面的示例(嵌套静态类)中,我有一些问题要问您 上面所示的例子是引入嵌套静态类的好例子吗 然后我的老师谈到了遗产,而我真的看不到任何遗产?就像我看到的那些类没有继承任何东西一样 您是对的,示例中没有继承,并且引入嵌套静态类不是一个好的示例。我希望使用3个独立类(和一个基类)作为继承的概念(其中几何图形是一个典型的例子)。当然,在解释代码时,如果不知道你的老师到底说了什么,就很难做出评论 静态嵌套类只能

所以我开始参加一些私人讲座来提高我的Java编程技能,我觉得我的老师在胡说八道(也许我错了)。在上面的示例(嵌套静态类)中,我有一些问题要问您

  • 上面所示的例子是引入嵌套静态类的好例子吗

  • 然后我的老师谈到了遗产,而我真的看不到任何遗产?就像我看到的那些类没有继承任何东西一样


  • 您是对的,示例中没有继承,并且引入嵌套静态类不是一个好的示例。我希望使用3个独立类(和一个基类)作为继承的概念(其中几何图形是一个典型的例子)。当然,在解释代码时,如果不知道你的老师到底说了什么,就很难做出评论

    静态嵌套类只能在显示非静态变量后引入

  • 这不是一个引入嵌套类的好例子,因为您提出的声明并不是出于对这些类的合理使用
  • 你说得对,这里没有遗产
  • 上面显示的示例是引入嵌套静态类的好示例吗
  • 不,似乎没有理由让它们是静态的,类应该在它们自己的文件中,而不是嵌套的

  • 然后我的老师谈到了遗产,而我真的看不到任何遗产?就像这些类没有继承我所看到的任何东西一样 这里没有继承权

    如何正确使用嵌套静态类的一个很好的例子是
    java.util.Collections
    类,它有许多嵌套的private静态类,这些类实现了不同的集合对象,如

    -始终为空的
    列表的特殊实现


    -集合的特殊实现
    不能添加或删除元素

    在类中创建的静态类在Java中称为静态嵌套类。这个例子并没有显示静态类的实际用途。以下是一个例子:

    public class ShapesGeometry {
    
        public static Circle Circle = new Circle();
        public static Rectangle Rectangle = new Rectangle();
        public static Triangle Triangle = new Triangle();
    
        public static class Circle {
            public double GetArea(double Radius) {
                return (3.14159 * Radius * Radius);
            }
    
            public double GetCircumFerence(double Radius) {
                return (2 * 3.14159 * Radius);
            }
        }//End Class Circle
    
        public static class Rectangle {
            public double GetArea(double Length, double Width) {
                return (Length * Width);
            }
    
            public double GetCircumFerence(double Length, double Width) {
                return (2 * Length + 2 * Width);
            }
        }//End Class Rectangle
    
        public static class Triangle {
            public double GetArea(double Base, double Height) {
                return (0.5 * Base * Height);
            }
    
            public double GetCircumFerence(double Side1, double Side2, double Side3) {
                return (Side1 + Side2 + Side3);
            }
        }// End Class Triangle 
    }
    

    关于第二点,没有继承。

    如果您想要一个嵌套静态类和继承的示例,我建议的第一个示例是查看Josh Bloch Builder模式(例如,在有效的Java 2书籍上)

    公共接口生成器{T build();}
    公共类MyClass{
    私有MyClass(){}
    公共静态类MyBuilder实现生成器{/*…*/}
    /*...*/
    }
    
    BTW:Java命名惯例是以小写字母开头。这样就不那么令人困惑了。^字段名也是如此。问题是他是怎么说继承的?仅仅说他在“谈论遗产”并不能告诉我们太多。也许他在讨论从这个阶级继承遗产的可能性等等。
    class TestOuter {
        static int data = 100; 
    
        static class Inner {
            void message() {
                System.out.println("data is "+data);
            }
        }
    
        public static void main(String args[]) {  
            TestOuter.Inner obj = new TestOuter.Inner();  
            obj.message();  
        }  
    } 
    
    public interface Builder<T> { T build(); }
    
    public class MyClass {
    
      private MyClass() {}
    
      public static class MyBuilder implements Builder<MyClass> { /*...*/ }
      /*...*/
    }