|
gateway23 wrote: a aRef=new b(); // why this line prints "in subclass". How a reference access the subclass?
A reference points to an object.
Your reference points to an object of type 'b'.
|
|
|
|
|
gateway23 wrote: a aRef=new b(); // why this line prints "in subclass". How a reference access
the subclass?
It is because eventhough you have declared aRef to be of class 'a', it acutally holds an instance of class 'b' at runtime. That is what Polymorphism is all about. That's not a problem, that's the expected behavior.
|
|
|
|
|
It doesn't hold it. The heap holds it. It points to it.
|
|
|
|
|
Well, that's what I meant. Don't read the word "holds" literally
|
|
|
|
|
Shameel wrote: Don't read the word "holds" literally
That is not the point. If you must give a technical answer then make sure it is accurate and clear. Remember, many of these questions are asked by people who do not have a lot of background knowledge or experience and rely on these answers to help them in their learning. The difference between "holds" and "points to" may be crucial to a new developer.
The best things in life are not things.
|
|
|
|
|
You're right. I'll make sure I choose the right words to explain my answer. Thanks for pointing out.
|
|
|
|
|
Hello friend...
Just add this line in main()
System.out.println("aRef's type is " + aRef.getClass().toString());
and output for this line must me : aRef's type is b
when you call aRef.show() then first this call must be resolved by class of aRef's object if fuction show() not found then jvm try to resolved it from super class.
|
|
|
|
|
in java a static method can access only other static member .
But,how static main method access non-static member of other class....?
Please tell me... sir/mam
|
|
|
|
|
do not. That's bad style.
If you need static final values, put them in an Interface:
public interface IInterface {
public class Def{
public static final String
VALUE1= "Value1",
VALUE2 = "Value2";
}
}
You can then access these values like IInterface.Def.VALUE1
EDIT:
The main-class should instance a Object. Not much more to do in the main, leave the rest to the new Object:
public static void main(String[] args) {
new MyObject();
}
regards Torsten
I never finish anyth...
|
|
|
|
|
I don't like the style you've shown here for the main method. It means that your entire application is running within the scope of MyObject's contructor, which just always feels wrong to me. A constructor is there to construct an object and get it ready to do work, not to do the actual work.
I would have two classes:
public class MyApp {
public static void main(String[] args) {
MyWorker w = new MyWorker();
w.run();
}
}
public class MyWorker implements Runnable {
public void run() {
}
}
That way MyWorker can be regarded as a reusable service, and the startup code is completely separate.
|
|
|
|
|
I agree on that - luckily now it's up to you to explain all about Runnable and Thread
regards Torsten
I never finish anyth...
|
|
|
|
|
If you have a non-static member variable and the access modifier of the class allows that member to be exposed then you must have an instance of the class to access it.
|
|
|
|
|
A static member of a class is constrained to access only the static member of the same class. It can, however, access any non-static member (if it is accessible from outside) of any class (including the class in which it is defined) if it has an instance variable to access the non-static member.
|
|
|
|
|
Actually non-static members are accessed via an object. An static member function can access non-static member of it's class also but through an oject... like--
class TestClass{<br />
<br />
int i_m_belongs_to_an_object_of_TestClass;
<br />
static int i_m_belongs_to_TestClass;
<br />
public static void function(){<br />
i_m_belongs_to_TestClass = 0;<br />
<br />
TestClass obj = new TestClass();<br />
obj.i_m_belongs_to_an_object_of_TestClass = 0;
<br />
OtherClass objOther = new OtherClass();<br />
objOther.i_m_belongs_to_an_object_of_OtherClass = 0;
<br />
int someInt = OtherClass.i_m_belongs_to_OtherClass;
}<br />
}<br />
<br />
class OtherClass<br />
{<br />
int i_m_belongs_to_an_object_of_OtherClass;
<br />
static int i_m_belongs_to_OtherClass;
}code><br />
<br />
Only one copy is allocated for static data members, one copy per object for non-static data members
|
|
|
|
|
sir/mam
i need to know the working of join() ....
i tried books and net but i didn't got it.
Please tell me exactly why we use join() function and what happens when we call the join()..
Thanks
|
|
|
|
|
|
I tried to follow this link and got a security warning that the website was trying to open a program on my computer. No idea what it was or why, but that sort of thing makes me nervous.
|
|
|
|
|
no thread here.
regards Torsten
I never finish anyth...
|
|
|
|
|
To be fair, the javadoc for this method isn't very clear:
Waits for this thread to die.
That's it. Not the most helpful javadoc I've ever seen.
The Oracle Java tutorial[^] is better:
The join method allows one thread to wait for the completion of another. If t is a Thread object whose thread is currently executing,
t.join();
causes the current thread to pause execution until t's thread terminates.
I think that's quite clear and succinct.
|
|
|
|
|
thanks david..it helps alot.
|
|
|
|
|
To ensure that a thread (referenced by some reference say threadRef) is finished, then you join() on that reference. like threadRef.join() if that thread is finished, then join() returned immediately otherwise join() will blocked until that thread get finished.
For example if you create three thread (a, b, c) for doing three different task A, B, C, from your main thread, but you need some initialization processing (which must be executed before start-up of a, b, c) and shutdown processing (which must be executed after finishing of a, b, c) then you may code like this
// in main()
System.out.println("System started");
initialization(); // a, b, c are not running yet.
System.out.println("initialization complete ");
Thread a = new Thread(new Task_A_RunnableClass());
Thread b = new Thread(new Task_B_RunnableClass());
Thread c = new Thread(new Task_C_RunnableClass());
a.start();
System.out.println("Thread "a" started ");
b.start();
System.out.println("Thread "b" started ");
c.start();
System.out.println("Thread "c" started ");
//Now wait for all thread to finished.
a.join();
System.out.println("Thread "a" finiished ");
b.join();
System.out.println("Thread "b" finiished ");
c.join();
System.out.println("Thread "c" finiished ");
shutdown(); // a, b, c are finished now.
System.out.println("System shutdown..... ");
|
|
|
|
|
Hi all,
I have page on which data is loaded from database it takes more time to load the page
so i want to display the loading ..... image which will intimate user to wait.
Any suggestions are welcome
Thanks & Regards
Yogesh
|
|
|
|
|
You mean like an image showing the machine is idle?
How about an dialog saying "wait"?
Why does it take so long to load the data?
regards Torsten
I never finish anyth...
|
|
|
|
|
The proper way to do this is with some form of progress bar[^].
The best things in life are not things.
|
|
|
|
|
Hello,
I would like to fully understand the concept of 'unchecked casting'.
I get an 'unchecked cast' warning when I try to do this:
<br />
List<Element> freq1;<br />
pfreq1 = XPath.newInstance("/values/val[@freq<10]");<br />
freq1 = (List<Element>) pfreq1.selectNodes(doc);
What I am doing on line 3 is converting a List (pfreq1) to a List<Element> (freq1).
After googling, I have taken over the following 'cure', which worked:
<br />
private void makeValid(List li) {<br />
freq1 = new ArrayList();<br />
for (Object o : li) {<br />
freq1.add((Element) o);<br />
}<br />
}<br />
<br />
makeValid(pfreq1.selectNodes(doc));<br />
This works, but I do not know why. I do not know why the 'unchecked cast' warning disappears then.
I am explicitly converting each element of the generic List pfreq1 to an Element, thus making all elements in that generic List turn into real Element objects, which would make it a List<Element>. Now the compiler is sure that every object inside that List is now of type Element and thus can convert it safely to a List<Element>. That's how I see it.
However, what I would like to know is how and why unchecked casting works.
Thank you
|
|
|
|