calling non-static nested class

P

Pradyut

I have two classes under the package javaapplication9

the first class: -
package javaapplication9;

/**
*
* @author Administrator
*/
public class NewClass {

/** Creates a new instance of NewClass */
public NewClass() {
}
public int addn(int i)
{
return i + i;
}
}
-----------------------------------------------------------------

The second class: -
package javaapplication9;

/**
*
* @author Administrator
*/
public class Main {

/** Creates a new instance of Main */
/*static Gear obj = new Gear();*/
public Main() {
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
System.out.println("test");
NewClass obj = new NewClass();
System.out.println(obj.addn(8));
Gear t =new Gear();
t.Jam();
}

public /*static*/ class Gear
{
public void Jam()
{
System.out.println("Testing");
}
}
}
-----------------------------------------------------------------

The problem:-
I can call non-static class NewClass from main and not the non-static
class Gear
Why??
Any other solution than declaring Gear static

Thanks

Pradyut
http://pradyut.tk
http://oop-edge.blogspot.com/
http://pradyutb.blogspot.com/
http://praddy-photos.blogspot.com/
http://oop-edge.spaces.live.com/
http://www.flickr.com/photos/praddy
http://groups.google.com/group/oop_programming
India
 
D

dagarwal82

I have two classes under the package javaapplication9

the first class: -
package javaapplication9;

/**
*
* @author Administrator
*/
public class NewClass {

/** Creates a new instance of NewClass */
public NewClass() {
}
public int addn(int i)
{
return i + i;
}}

-----------------------------------------------------------------

The second class: -
package javaapplication9;

/**
*
* @author Administrator
*/
public class Main {

/** Creates a new instance of Main */
/*static Gear obj = new Gear();*/
public Main() {
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
System.out.println("test");
NewClass obj = new NewClass();
System.out.println(obj.addn(8));
Gear t =new Gear();
t.Jam();
}

public /*static*/ class Gear
{
public void Jam()
{
System.out.println("Testing");
}
}}

-----------------------------------------------------------------

The problem:-
I can call non-static class NewClass from main and not the non-static
class Gear
Why??
Any other solution than declaring Gear static

Thanks

Pradyuthttp://pradyut.tkhttp://oop-edge.blogspot.com/http://pradyutb.blogspot.com/http:/...ttp://groups.google.com/group/oop_programming
India

try this:-
Main.Gear gear = new Main.Gear();
 
L

Lew

Correction is above post.
Use this
Main.Gear t =new Main().new Gear();

Explanation: Gear is an inner class, and needs an object of its outer class to
give it nutrients. "new Main()" makes an object of the enclosing class, which
object owns the non-static inner class, so from the object you call "new
Gear()". Your original code did not have an enclosing object around the "new
Gear()".

Incidentally, the virtually universal and Sun-endorsed convention for Java
nomenclature is to name classes with an initial upper-case letter, methods and
non-static-final variables with an initial lower-case letter. The method
"Jam()" would conventionally be named "jam()".

- Lew
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,056
Latest member
GlycogenSupporthealth

Latest Threads

Top