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