1. 如何实现两个对象之间互发消息,请举例说明
class FighterPlane {
String name;
int missileNum;
public FighterPlane(String _name, int _missleNum) {
this.name = _name;
this.missileNum = _missleNum;
}
public void fire() {
if (this.missileNum > 0) {
System.out.println("now fire a missile !");
this.missileNum -= 1;
} else {
System.out.println("No missile left !");
}
}
}
class A {
FighterPlane fp;
public A(FighterPlane fpp) {
this.fp = fpp; //A对象中拥有了FighterPlane对象的引用
}
public void invoke() {
//A对象发送消息给FighterPlane的对象
System.out.println(fp.name);
}
}public class Run {
public Run() {
}
public static void main(String[] var0) {
FighterPlane ftp = new FighterPlane("su35", 10);
//产生A对象,并将ftp作为对象引用传入
A a= new A(ftp);
//发送消息,产生调用关系
a.invoke();
}
}
2. 谈谈组合与继承的区别以及两者的使用场景(即什么时候宜用组合 ?什么时候宜用继承?)
组合和继承是面向对象中两种代码复用的方式。
继承是子类继承父类所有,父类的pub和pro属性和方法都可以被子类访问和调用。
组合是指将已存在的类型作为一个新建类的成员变量类型,两个类之间无上下级关系。
3. Java中的运行时多态的含义是什么?有什么作用?请举例说明。
多态分为两种情况:编译时多态和运行时多态
作用:可替代性、可扩充性、接口性