我如何阅读Java的API文档?

时间:2016-06-17 04:40:38

标签: java class methods javadoc

我对文档中使用的类名有些困惑。

如果我想使用df[2] = df.groupby('A').cumcount(ascending=False)+1 df[1] = np.where(df['A']==True,df[2],None) df[1] = df[1].fillna(method='bfill').fillna(0) del df[2] A B 1 # 3 False 0.277557 3.0 # 7 False 0.400751 3.0 # 6 False 0.431587 3.0 # 5 False 0.481006 3.0 # 1 True 0.534364 3.0 # 2 True 0.556378 2.0 # 0 True 0.863192 1.0 # 4 False 0.916247 0.0 类中的方法getLength(Object name),编译器会接受Array但不接受java.lang.reflect.Array.getLength(nameOfArray)。虽然下面链接的API文档的图片似乎暗示我两个类都链接到Array类方法。

Java API documentation example

4 个答案:

答案 0 :(得分:4)

您看到它们相关联的原因是ObjectArray超类

在Java中,Object所有类的超类。

  

java.lang包中的Object类位于顶部   类层次结构树。每个班级都是直系或间接的后代,   对象类。

此处更多信息:https://docs.oracle.com/javase/tutorial/java/IandI/objectclass.html

每个这样的子类(本例中为Array类)都从超类继承了一些方法(本例中为Object类)。

如果子类希望更改它从超类继承的任何变量或方法,那么它将覆盖那些。此外,子类本身可能有自己的变量和方法,这些变量和方法与超类无关。在您显示的示例中就是这种情况,即Array是一个具有长度的数据结构,但其父对象没有长度。

注意:请阅读 Java继承
此外,还阅读了有关访问说明符(因为私有成员未被继承),关键字(例如final变量无法更改值,{{1方法不能被覆盖,final类不能被子类化。祝你好运!

答案 1 :(得分:3)

  

如果我想使用Array类中的方法getLength(Object name),编译器会接受java.lang.reflect.Array.getLength(nameOfArray)

正确,因为那是方法的所在。

  

但不是java.lang.Object.getLength(nameOfArray)

不正确,因为java.lang.Object类中没有这样的方法。

  

虽然下面链接的API文档似乎暗示我们两个类路径都链接到Array类方法。

不,它没有。图片中部分的含义是第二个类扩展了第一个类。

答案 2 :(得分:1)

该文档示例显示ArrayObject的孩子,而不是您可以互换使用它们。

答案 3 :(得分:0)

Array延伸Object。这意味着可用于对象的任何方法都可用于数组,但反之则不然。

考虑这个例子。将Array替换为Student,将Object替换为HumanStudent extends Human。可以说HumangetDateOfBirth方法。 Student也有getGrades方法。在Student,您可以拨打getDateOfBirthgetGrades,而在Human,您只能拨打getDateOfBirth,因为未为婴儿定义成绩。

请注意Object是所有其他类的超类。因此,它的方法数量最少。