类A:protected class LinkedListNode
{
DataElement info;
LinkedListNode link;
}
protected LinkedListNode first;
类B继承A:first.info合法
类C继承B:first.info非法,怎么解决这种问题好?

解决方案 »

  1.   

    super.父类属性
    挨个赋下去可以吧
      

  2.   

    是不是pacakge不同啊?
    改成
    protected DataElement info; 
      

  3.   

    用接口阿行啊?  B,C都继承接口M
      

  4.   

    不要把protected放到class前面,没有意义。将域声明改为:
    protected DataElement info; 
      

  5.   

    B集成A,而C集成了B,也就是说B和C都是A的派生类,两者地位等同,所以B能实现的,C都能实现,因此感觉楼主的要求无法实现。
      

  6.   

    为什么非法啊,你都设了什么package?
      

  7.   

    我理解楼主的意思是:超类是A, B集成A,C继承B,然后设置一种机制,让B的实例能访问A的变量,而C的实例不能访问A的变量。
      

  8.   

    用接口实现,把DataElement info放在接口中,类B实现该接口,类C不用实现该接口。
      

  9.   

    总结 !继承子类继承父类除了private的 所有成员!!
         2.protect 有包访问权!
         所以我想你最好 抽象类或者接口!!!什么的向上转型!!!
      

  10.   

    恩,要想有这种情况,应该就要依靠包的作于范围,
    public 是公共的——不合适
    protect 外包继承的——不合适
    private 是有的——不合适
    default 默认的——如果见C类放在与A类不同的包下那么C类即使继承了A类应该也不能访问C类的属性了
      

  11.   

    A和B放在一个包中,C放在另一个包中