EugeneElPepelusa
EugeneElPepelusa

Reputation: 23

Cant use a public method from another class in java

I am trying to call a public constructor of a public class located in one package of my project from the main class, located in a class from another package different to the first one, but located in the same project.

I have understood that the public modifier grant you access to methods from any location inside or outside the package, so i just try to create and instance a new object of the public class first mentioned.

F.E: I try something like.... ClassName newObject = new ClassName(); from the main class

Actually, in order to be able of using that (im using netbeans IDE) I need to import the class/method I want to call, even if they have the public modifier.

My question is... is there a way of using these methods without the need of importing them to the main class ?

I am new in this webpage, so sorry if there is anything wrong with the question.

Upvotes: 0

Views: 1739

Answers (3)

MC Emperor
MC Emperor

Reputation: 22967

Qualification and visibility have little to do with eachother. Those are different concepts.

Visibility (enforced by access modifiers like public, protected, private and package-private) is about which class may access (i.e. call or use) it.

Qualification is about the compiler asking you: "Okay, you are mentioning a class name, but there could be thousands around with that name. Which one do you mean?"

Upvotes: 1

user1728310
user1728310

Reputation: 687

Java compiler restricts its search for classes inside the package only. In order to make use of any class belonging to a different package, you have to import it explicitly. You can read more about packages here.

Access specifiers are more from restricting the methods from being accessible by outside world. These access specifiers enforce further restrictions on top of what is enforced by packages. You can refer to this link for access specifiers.

Upvotes: 0

Christoph John
Christoph John

Reputation: 3283

You could use the fully qualified class Name instead.

a.b.c.MyClass myClass = new a.b.c.MyClass();

Also see Java: import statement vs fully qualified name?

Upvotes: 1

Related Questions