Java类中的数据成员_java类定义中的引用数据成员,能不能实现多态?

常见的多态,都是在main函数里定义了一个父类的引用的指向子类的对象,从而通过父类的引用调用子类的方法。但是今天在做对象深克隆,浅克隆的实验时,发现如果这个引用是类的数据成员...

常见的多态,都是在main函数里定义了一个父类的引用的指向子类的对象,从而通过父类的引用调用子类的方法。但是今天在做对象深克隆,浅克隆的实验时,发现如果这个引用是类的数据成员,好像不能多态

首先尝试浅克隆(雇员类里包含了地址类的引用)

class Address

{

protected String city;

protected String province;

//省略get set 方法,构造函数及toString

}

class Employee implements Cloneable

{

protected String name;

protected String position;

protected Address address; //引用数据成员

//省略get set 方法及toString构造函数

@Override

public Employee clone()

{

Employee em=null;

em=(Employee)super.clone();

return em;//省略try catch

}

在做深克隆时没有必要重新写雇员类和地址类,用继承

class Address2 extends Address implements Cloneable

{

//省略构造函数

@Override//重新写clone()函数

public Address clone()

{

Address2 ad=null;

ad=(Address2)super.clone();

return ad;

}

}

class Employee2 extends Employee implements Cloneable

{

public Employee2(String name, String position,Address2 address2)

{

super(name,position,address2);//Employee里的address指针指向的是子类address2

}

@Override

public Employee2 clone()

{

Employee2 em=null;

em=(Employee2)super.clone();

em.address=address.clone();//报错1.address的 来自Object类的clone是不可见的2.无法把object类变成address类

return em;

}

按照多态,雇员2类的address指针指向子类对象address2,那么在调用address.clone(),函数时就应该调用我重新在address2里定义的clone()函数(它是public的,而且返回的是address)而不是Object类里的clone()函数,那就不该报错,请高手们帮我指点迷津!万分感谢!

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值