+ 3
Is there a rule for methods?
Like should I create them in a different class and call them in the main thing that gets executed automatically in another class? Or just make them inside the same class and make them static to be able to call them? It's just preference or it depends?
5 Answers
+ 11
In object-oriented programming, we talk about stuff in terms of objects and methods (i.e, what actions an object can perform). Objects are instances of classes. For example, Human is a class, while John, an object, is an instance of a Human. Whatever non-static method you place under the Human class should reflect something a normal human should be capable of, e.g. eat, drink, walk, talk, etc. As such, John can do stuff like
John.eat("pizza")
John.drink("pepsi")
Now, let's say that you want John to go to space. You can achieve this in multiple ways. You can create a new method under the Human class to allow John to John.goToSpace(). Or, you can create a new SpaceCraft class, and put the goToSpace method under that class.
spacecraft1.goToSpace(John)
// SpaceCraft instance brings John to space.
Which is better? Are all humans capable of going to space? If the answer is no, then the latter implementation may better reflect how stuff works IRL.
+ 5
being Java an object language, which coexists also with static environments, the first thing to do in the main would be to instantiate an object, even of the class to which the main belongs to start that series of method invocations and creation of objects that they carry out the program.
if you use java in a static environment, maybe you have the wrong language. however it is always possible to distort the use of a language.
think of objects, and methods disappear. they become messages accepted by the objects. if you keep thinking about the data and the methods separately, you will keep asking questions like that
after all, the paradigm of object-oriented programming is "Determine which classes you want; provide a complete set of the operations of each class; make explicit what they have in common through inheritance." but if you talk about methods before classes, you don't need an object language
+ 3
there are no rules but there are standards.
it depends.
0
Could you elaborate, how it's seen to choose one way over other, maybe there's one that's considered best practice?
0
static method can't use non-static fields (if that has to keep value between two calls of the method).
class Counter {
private int value=0;
static int increment() {
return ++value ; //error
}
}