刚写个程序,请高手指点,怎么继承父类中private对象,吧private改成public就好使,可要求是private,所以请指点一下
public abstract class A
{
private Fly fly;
public Duck(){
}
public abstract void display();
public void performQuack()
{
fly.s();
}
}
public class B extends A
{
public B()
{
fly=new Wings();
}
public void display()
{
fly.s();
}
}
public interface Fly 
{
public abstract void s();
}
public class Wings implements Fly
{
public void s()
{
System.out.println("I can fly!");
}
}

解决方案 »

  1.   

    是否可以给A增加构造函数,接受Fly参数abstract class A {
       private Fly fly;
       public A(Fly fly) {
          this.fly = fly;
       }
    }
    class B extends class A {
       public B( ) {
          super(new Wings());
       }
       public   void   display() 
       {
           performQuack();
       }
    }
      

  2.   

    private 私有的 。子类不能访问 。,。
      

  3.   

    根本行不通的,private成员在子类中不能直接访问.办法有两个:第一,把private改成protected
    第二,如果你一定要访问父类的private成员,那么,在父类中增加一个public方法,它返回该private变量.则在子类中就可以通过调用它来间接访问该变量.
    public   abstract   class   A
    {
    private   Fly   fly;
    public Fly getFly()
    {return fly;}
    public   Duck(){
    }
    public   abstract   void   display();
    public   void   performQuack()
    {
    fly.s();
    }
      

  4.   

    要访问private成员很简单,分别设置一个getter和setter就可以了。
    可问题是楼主的程序写得太差了,头痛医头,脚痛医脚是不行的。这个程序的问题太多了。
    学习基本功,不光是学语法。让你的代码通过编译不是目的,目的是要从每一个简单的程序中锻炼自己缜密合理的设计能力和规范的编程风格。
      

  5.   

    顶一个,虽然不知道楼上说的GETTER,SETTER是什么。但是对程序员的要求和作风说的很有道理。 但记得private定义的东西,作用域只在该类中。
      

  6.   

    顶Dan1980一下.说的很对目的是要从每一个简单的程序中锻炼自己缜密合理的设计能力和规范的编程风格。要自己好好学习才行.谢谢你的教导.
    同时也帮楼主顶一下
      

  7.   

    private是私有,可以通过getter,setter访问!