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
}
所以我开始参加一些私人讲座来提高我在Java编程方面的技能,我觉得我的老师说的是胡说八道(也许我错了)。在上面的例子中(嵌套的静态类),我有一些问题要问你。
上面显示的示例是引入嵌套静态类的一个很好的示例吗?
我的老师然后谈到继承,我真的看不到任何继承?就像这些类不能从我所看到的东西继承任何东西。
答案 0 :(得分:1)
你是对的,示例中没有继承,并且它不是引入嵌套静态类的好例子。我希望使用3个独立的类(和基类)作为继承的概念(其中几何形状是一个规范的例子)。但当然,如果不知道老师在解释代码时实际说了些什么,就很难评论。
只有在显示非静态变体后才能引入静态嵌套类。
答案 1 :(得分:1)
- 上面显示的示例是引入嵌套静态类的好例子
醇>
似乎没有理由让它们变为静态,这些类应该在他们自己的文件中而不是嵌套
- 我的老师然后谈论继承,我真的看不到任何继承?就像这些类不能从我所看到的东西继承任何东西。
醇>
这里没有继承。
如何正确使用嵌套静态类的一个很好的例子是java.util.Collections
类,它有许多嵌套的私有静态类,它们实现不同的Collection对象,如
Collections.emptyList() - List
的特殊实现,始终为空
Collections.UnmodifableCollection - Collection
的特殊实现,无法添加或删除元素
答案 2 :(得分:0)
答案 3 :(得分:0)
在类中创建的静态类在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();
}
}
对于你的第二点,没有继承。
答案 4 :(得分:0)
如果你想要一个嵌套静态类和继承的例子,我建议的第一个例子就是看看Josh Bloch Builder模式(例如,在Effective Java 2上的书)。
public interface Builder<T> { T build(); }
public class MyClass {
private MyClass() {}
public static class MyBuilder implements Builder<MyClass> { /*...*/ }
/*...*/
}