I am a new-bee to Java.
I know, even a sub-class can not refer a non-static member of a base class directly. like,
class BaseClass
{
int id;
public void testMethod()
{
System.out.println("Hello");
}
}
public class Test1 extends BaseClass
{
public static void main(String[] args)
{
System.out.println("ID : " + id);
}
}
This will give us an error "Cannot make a static reference to the non-static field id"
But, in case of abstract class, we can do it.
abstract class MyAbstractClass
{
int id;
public void setId(int id)
{
this.id = id;
}
}
public class SubClass extends MyAbstractClass
{
public void testMethod()
{
System.out.println("ID Value : " + id);
}
public static void main(String[] args)
{
SubClass obj = new SubClass();
obj.setId(1);
obj.testMethod();
}
}
I was wondering how and why is it possible in case of abstract class. Appreciate your answers. Please be gentle, I am a new-bee to java. :)