• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

abstract class

 
Mona Gadkari
Ranch Hand
Posts: 64
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
an abstract class cannot b instiated -- this is true
then in the code below- static A a1 = new A(2){....} -- how come holds.
pls clerefy.......
abstract class A {
private int x = 4;
private int y = 2;
public A(int i1) {x=i1;}
public int x() {return x;}
public void x(int x) {this.x = x;}
public int y() {return y;}
public void y(int y) {this.y = y;}
public void incY() {y++;}
public abstract int math();
}
class B {
static A a1 = new A(2) {
{incY();}
public int math() {return x()+y();}
};
public static void main(String[] args) {
System.out.print(a1.math());
}
}
 
Andres Gonzalez
Ranch Hand
Posts: 1561
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
static A a1 = new A(2) {..
This looks like if you were creating an instance of A. But in reality, it's only a subclass of A. When you have an anonymous inner class, your either creating an on-the-fly subclass of a class or implementing an interface.
In this case, your anonymous inner class is implementing the abstract method from class A.
HTH
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic