2015-06-27 112 views
-1
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编程技能,我觉得我的老师在说胡话(也许我错了)。在上面的例子中(嵌套静态类),我有一些问题要问你。嵌套静态类

  1. 上面显示的例子是介绍嵌套静态类的一个很好的例子吗?

  2. 我的老师然后谈论继承,我真的看不到任何继承?就像这些类没有继承任何我能看到的东西。

+2

BTW:Java命名约定是用小写字母开头mehtods。这种方式更容易混淆。 – eckes

+1

^字段名称也一样。 – Siguza

+2

问题是,他在谈论继承是什么?只是说他“在谈论继承”并没有说明什么。也许他正在讨论从这个班级继承的潜力。 – RealSkeptic

回答

1

你是对的,在这个例子中没有继承,它不是一个介绍嵌套静态类的好例子。我期望为继承的概念使用3个独立的类(和一个基类)(几何形状是一个典型的例子)。但是,如果不知道你的老师在解释代码时实际上说了什么,当然很难评论。

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

0
  1. 不是引入嵌套类的好例子,因为你提出的声明并不是由任何合理使用这些类所激发的。
  2. 你是对的,在这里没有继承。
1
  1. 是引入嵌套静态类
  2. 一个很好的例子,上面的例子

没有似乎没有成为一个理由,让他们静,类应在他们自己的文件中并没有嵌套

  1. 我的老师然后谈论继承, lly看不到任何继承?就像这些类没有继承任何我能看到的东西。

这里没有继承。

如何使用嵌套的静态类一个很好的例子是正确的java.util.Collections类有许多嵌套私人静态它们实现像

Collections.emptyList() -A专项实施的List始终为空不同的集合对象类

Collections.UnmodifableCollection - 一种特殊的实施Collection不能有添加或删除

0

一个静态C元素在类中创建的lass被称为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(); 
    } 
} 

对于你的第二点,没有继承。

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> { /*...*/ } 
    /*...*/ 
}