我的主要方法是';在java中看不到不同包中的所有公共方法

我的主要方法是';在java中看不到不同包中的所有公共方法,java,eclipse,object,packages,public-method,Java,Eclipse,Object,Packages,Public Method,包中的main方法本身只能看到另一个包中的一些方法,即使它们都是公共的。这是我的代码示例 package stuff.code; public class AObject { public AObject(); public AObject(String str); public int getLength(); public int getHeight(); } package stuff

包中的main方法本身只能看到另一个包中的一些方法,即使它们都是公共的。这是我的代码示例

    package stuff.code;
    public class AObject
    {
        public AObject();
        public AObject(String str);
        public int getLength();
        public int getHeight();
    }

    package stuff.code;
    public class BObject extends AObject
    {
        public BObject();
        public BObject(String str);
    }

    package stuff.test;
    import stuff.code.AObject;
    import stuff.code.BObject;
    public class tester
    {
        AObject a = new AObject(); //no red underline
        AObject aa = new AObject("some string"); //no red underline
        BObject b = new BObject(); //no red underline
        BObject bb = new BObject("some string"); //tells me there is no such constructor
        b.getLength(); //tells me I need a getLine method in BObject too
    }
我已经研究了setAccessible(boolean flag)方法,但我不了解其中的大部分内容,在导入java.lang.reflect.AccessibleObject之后,它仍然没有定义


这不是我的实际代码。我希望这是一个含糊不清的问题,这样一个答案会对许多遇到这个问题的人更有用。我的方法都是具体的,但身体不是问题。当所有内容都在同一个包中,但tester类必须在不同的包中时,它可以正常运行。

在BObject构造函数的第二次调用中,您传递了一个参数,而在类中的声明中,它不接受任何参数。检查一下

这是你真正的密码吗?没有body的方法应该只在抽象类或接口中工作,而不是在像AObject和BObject这样的普通类中工作。可能是因为这些问题,这些类不再被编译了,而在tester中,您仍然在使用这些类的早期版本吗?如果它甚至不编译,它怎么能“正常工作”呢?这一点很好。我改变了它做了一个干净的重建,扔掉任何旧的编译产品。(假设您的原始代码有
{…}
而不是
)似乎eclipse有一个问题。如果所有方法和构造函数都有主体,它应该可以工作。只有一行需要标识符:
intz=b.getLength()它接受字符串作为参数它是接受参数而不是构造函数的方法。默认情况下,构造函数是第一个,我猜是这样的,因为您似乎同时命名了方法BObject和构造函数BObject,因此第一个被假定为构造函数,它不接受任何参数。方法必须具有返回类型。BObject()是一个没有参数的构造函数。BObject(stringstr)是另一个具有一个参数的构造函数。它们有相同的名称并不重要,因为它们有不同的参数。这称为构造函数重载。