Why make an object for Main class, for the methods to work?

Why make an object for Main class, for the methods to work?



I was facing an error before, but when I made an object in this class the and called for the method, it worked flawlessly. Any explanation? Do I always have to make an object to call for methods outside of the main method (but in the same class)?
here:


public class A

public static void main(String args)

A myObj= new A();
System.out.println(myObj.lets(2));



public int lets(int x)
return x;







I'm afraid I don't understand your question. Are you asking why A.lets(2) doesn't work? If so, consider reading up on static methods, because that's what it sounds like you're going for.
– Silvio Mayolo
Aug 27 at 2:19


A.lets(2)




2 Answers
2



You need to understand static. It associates a method or field to the class itself (instead of a particular instance of a class). When the program starts executing the JVM doesn't instantiate an instance of A before calling main (because main is static and because there are no particular instances of A to use); this makes it a global and an entry point. To invoke lets you would need an A (as you found), or to make it static (and you could also limit its' visibility) in turn


static


A


main


main


static


A


lets


A


static


private static int lets(int x)
return x;



And then


System.out.println(lets(2));



is sufficient. We could also make it generic like


private static <T> T lets(T x)
return x;



and then invoke it with any type (although the type must still override toString() for the result to be particularly useful when used with System.out.println).


toString()


System.out.println



There are a importance concept to consider an is static concept. In your example you have to create an instance of your class because the main method is static and it only "operate" with other statics methods or variable. Remember that when you instantiate a class you are creating a copy of that class an storing that copy in the instance variable, so as the copy (That was create inside of a static method in your case) is also static so it can access the method which is not static in that context.


static concept


main


only


methods or variable


(That was create inside of a static method in your case)



In order to not create an instance and access to your method you need to make your lets method static(due to the explanation abode)


lets method


public static int lets(int x)
return x;



And in your main you don't need to instantiate the class to access to this method.


public static void main(String args)
System.out.println(lets(2));



Check this guide about static in java: https://www.baeldung.com/java-static



Hope this help!






By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Popular posts from this blog

𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

Edmonton

Crossroads (UK TV series)