Call to another class and instantiate object
Hi all, I hope you are well. I am trying to explain some code to a friend :
StringConcatenate StringConcatenate1 = new StringConcatenate();
StringConcatenate1.stringConcat();
I said that this code creates an object "StringConcatenate1 " of type StringConcatenate and executes method stringConcat() (which is from class StringConcatenate()) on object StringConcatenate1. Is this correct ? What I am trying to do here is call another class from within a different class (all in same package). Been a while since I have done Java so please excuse the simple question lol. I also said to him that we can just call the method from that class using a class reference and without creating an object like so :
StringConcatenate.stringConcat();
Is my thinking correct here? And is there a more elegant way to call a method in another class? Oh, and is there a convention for naming objects and is StringConcatenate1 an acceptable name?
majestic0110
Nearly a Posting Virtuoso
1,328 posts since Oct 2007
Reputation Points: 256
Solved Threads: 72
Hi all, I hope you are well. I am trying to explain some code to a friend :
StringConcatenate StringConcatenate1 = new StringConcatenate();
StringConcatenate1.stringConcat();
I said that this code creates an object "StringConcatenate1 " of type StringConcatenate and executes method stringConcat() (which is from class StringConcatenate()) on object StringConcatenate1. Is this correct ? What I am trying to do here is call another class from within a different class (all in same package). Been a while since I have done Java so please excuse the simple question lol. I also said to him that we can just call the method from that class using a class reference and without creating an object like so :
StringConcatenate.stringConcat();
Is my thinking correct here? And is there a more elegant way to call a method in another class? Oh, and is there a convention for naming objects and is StringConcatenate1 an acceptable name?
http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html
StringConcatenate1 is not a good name for the object. stringConcatenate1 would be better. See the link on conventions. Whether something is in the same package is relevant to the public/private/protected nature of the class and the methods and where you import it from, but I can't think of a reason why it would affect how you called it. See this link for private/public/protected modifiers and packages, subclasses, etc. http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html
StringConcatenate.stringConcat();
This is fine assuming that stringConcat () is a static method within the StringConcatenate class. If it isn't a static method, you'll need to call it with an object.
Overall, your explanations seem fine to me. Just add the part about the static modifier. I believe you'll get an error for this:
StringConcatenate.stringConcat();
if it's not a static method, and you'll get a warning (but not an error) for this:
StringConcatenate1.stringConcat();
if it IS a static method.
VernonDozier
Posting Expert
5,527 posts since Jan 2008
Reputation Points: 2,633
Solved Threads: 711
Classes begin with capital. Methods with lower.
StringConcatenate stringConcatenate1 = new StringConcatenate();
stringConcatenate1.stringConcat();
You create an object/instance of type StringConcatenate. And you call the method stringConcat() of the instance stringConcatenate1.
Most of the time different instances have different results when they call the same method:
StringConcatenate string1 = new StringConcatenate("aaa");
StringConcatenate string2 = new StringConcatenate("bbb");
string1.stringConcat();
string2.stringConcat();
That is why we create different instances of the same class.
Also this would only be correct if the method was declared "static"
StringConcatenate.stringConcat();
If the method is static you don't need to create an instance to call it
javaAddict
Nearly a Senior Poster
3,329 posts since Dec 2007
Reputation Points: 1,014
Solved Threads: 448
Excellent, thanks very much, both of you. Quick answers there too!
majestic0110
Nearly a Posting Virtuoso
1,328 posts since Oct 2007
Reputation Points: 256
Solved Threads: 72
Thanks axeeffect2002 ! Its good to see I am not as rusty as I thought!
majestic0110
Nearly a Posting Virtuoso
1,328 posts since Oct 2007
Reputation Points: 256
Solved Threads: 72
One more note on something I missed and I haven't seen anyone else mention from your first post.
which is from class StringConcatenate()
The parentheses here don't really make sense with the phrase in red. StringConcatenate (no parentheses) is the class. StringConcatenate() is a constructor from the StringConcatenate class which creates a new instance of type StringConcatenate . The parentheses imply a method (including constructors), not the class itself.
You probably already knew that, but I figured I'd point it out. Not trying to be overly picky with the grammar or anything.
VernonDozier
Posting Expert
5,527 posts since Jan 2008
Reputation Points: 2,633
Solved Threads: 711
Hi Vernon, thanks for pointing that out. I tried to remove the parentheses from :
StringConcatenate StringConcatenate1 = new StringConcatenate();
StringConcatenate1.stringConcat();
to
StringConcatenate StringConcatenate1 = new StringConcatenate;
StringConcatenate1.stringConcat();
This gives the error : ( or [ expected.
majestic0110
Nearly a Posting Virtuoso
1,328 posts since Oct 2007
Reputation Points: 256
Solved Threads: 72
Hi Vernon, thanks for pointing that out. I tried to remove the parentheses from :
StringConcatenate StringConcatenate1 = new StringConcatenate();
StringConcatenate1.stringConcat();
to
StringConcatenate StringConcatenate1 = new StringConcatenate;
StringConcatenate1.stringConcat();
This gives the error : ( or [ expected.
The code was fine before. Don't change the code. I was referring to the English-sentence description of the code. Make the code the way it was before. You WANT to call the constructor, so you WANT the parentheses, so put the parentheses back in the way they were before.
VernonDozier
Posting Expert
5,527 posts since Jan 2008
Reputation Points: 2,633
Solved Threads: 711
lol, ok I see exactly what you mean now! Thanks a lot :)
majestic0110
Nearly a Posting Virtuoso
1,328 posts since Oct 2007
Reputation Points: 256
Solved Threads: 72