Java第6章:面向对象(下)

1、如何实现两个对象之间互发消息,请举例说明。

使用this关键字来表示当前对象,实现两个对象之间互发消息。举例如下:

class FighterPlane {
	private String name;
	private int missileNum;
	private A a;
	
	public void setA(A_a) {
		if (a_ != null) { a = _a ;}
	}

	public A getA(){
		if (a != null) {
			return a;
		}
		else {
			return null;
		}
	}

	//以下两个方法不是本里的重点,因此仅进行简要说明
	public void fire(){......}
	public FighterPlane(String _name,int _missileNum) {......}

class A{
	FighterPlane fp;
	public A(FighterPlane fpp) {
		this.fp = fpp;
		fpp.setA(this);//将当前对象传给FighterPlane
	}
	public void invoke() {
		//A中对象发送消息给FighterPlane的对象
		fp.fire();
	}
}

public class Run{
	public static void main(String[] args){
		FighterPlane ftp = new FighterPlane ("su35",10);
		A a = new A(ftp);
		a.invoke();
	}
}

2、谈谈组合与继承的区别以及两者的使用场景(即什么时候宜用组合?什么时候宜用继承?)。

  • 组合使用场景:仅需要使用某个类的某些属性及方法,而无需对这些方法进行修改;
  • 继承使用场景:不仅需要用到所继承父类的属性和方法,还需要对它们进行完善和修改,创建出更为具体的子类。

3、Java中的运行时多态的含义是什么?有什么作用?请举例说明。

  • 含义
    在运行时才可以确定执行哪个方法的多态即为运行时多态。使用父类引用指向子类对象,再调用某一父类中的方法时,不同子类会表现出不同结果。
  • 作用
    扩展性极好。
  • 举例如下
class Person{
	String type = "P";
	public String getName() {
		String name = "Person";
		return name;
	}
}
class Man extends Person{
	String type = "M";
	public String getName(){
		String name = "Man";
		return name;
	}
    public String newName(){
        return "newName";
    }
}

public class Test { 
	public static void main(String[] args) {
		Person p = new Man(); // 父类的对象引用指向了子类对象
		System.out.println(p.type);        //返回结果为P
		System.out.println(p.getName());   //返回结果为Man
 		System.out.println(((Man)p).newName()); // 
	}
 
}


4、简述运算符instanceof的使用场景。

当同一个父类(一般是抽象类)被多个子类继承时,需要定义函数来对不同的子类进行不同的操作,此时需要判断该函数所接收的对象是哪个子类的实例,便可以对不同子类的实例进行不同的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值