1. “is-a” and “has-a” relationships
在Java中,“is-a” 代表的是类之间的继承关系,比如我们之前建立的Circle和Geometry两个类,我们就可以说“a Circle is-a Geometry”,也就是说:Circle是Geometry的子类,或者,Geometry是Circle的父类。
“has-a”关系,代表的是一种从属关系。比如,我们建立一个类叫Student,并在Student里定义一个Integer型的实例变量studentID;我们就可以说“a Student has an Integer studentID,” 即“每个学生都有一个学号”。这里的Student和Integer之间就是has-a的关系。
2. null
我们都知道,引用类型变量存储的值是对象的地址。如果我们声明了一个引用类型变量,而没有给其赋值,那么,这个引用类型变量的值就是null,或者说:“the reference variable has a null reference.”
有时候,我们想要清除一个引用类型变量的值,也可以将null赋值给这个变量。一般来说,如果一个变量的值是null,那么就不可以使用这个变量去调用方法。
值得注意的是:null和empty是两个不同的概念。比如我们可以创建两个String型变量:
String str1 = null;
String str2 = "";
str1的引用就是null,即str1不指向任何一个字符串;而str2的引用就不是null,str2指向了一个字符串,只不过这个字符串是空的(empty),里面什么字符都没有。
3. this
关键词this可以用来引用当前对象,或者说: “the keyword this is a reference to the object whose method or constructor is being called.”我们还可以称之为隐式参数(the implicit parameter)。比如下面这个例子:
public static void main(String[] args)
{
TheClass myObject = new TheClass();
myObject.doSomething();
}
public class TheClass
{
public void doSomething()
{
doSomethingElse(this);
}
public void doSomethingElse(TheClass object)
{
System.out.println("This is an example.");
}
}
显示结果就是:
This is an example.
4. super.method(args)
之前我们提到过,子类中可以调用父类的方法。如果我们已经在子类中重写了一个父类中的方法,但是仍然想要在子类中使用父类的这个方法的时候,我们就可以使用super.method(args)来调用这个在父类中的方法,比如:
public class Circle extends Geometry
{
private double radius;
public String getColor()
{
return "Color has been changed from " + super.getColor() + " to Black.";
}
}
public class Geometry
{
private String color = "White";
public String getColor()
{
return color;
}
}
下面,给大家留一道小题:
public class Father
{
public void doSomething(Father object)
{
System.out.println("Father");
}
}
public class Son extends Father
{
public void doSomethingElse()
{
super.doSomething(this);
}
public void doSomething(Father object)
{
System.out.println("Son");
}
}
如上,我们建立了一个父类和一个子类,请问下面代码运行之后的输出结果是什么?
Son object = new Son();
object.doSomethingElse();
附:AP CS A Free Response Questions 下载地址:
https://apcentral.collegeboard.org/courses/ap-computer-science-a/exam
© 2024. All Rights Reserved. 沪ICP备2023009024号-1