我们可以在匿名类中定义一个方法而不是超类中存在的方法吗?如果是,它是如何可能的以及我们如何访问它 例如
abstract class a
{
public void method()
{
}
}
class b
{
public static void main(String arr[])
{
a x=new a()
{
public void y()
{
}
};
}
}
我们如何访问y()
方法?
答案 0 :(得分:2)
我们可以在匿名类中定义一个方法而不是超类中存在的方法吗?
是。事实上,你只是在你的例子中做到了。
我们如何访问y()方法??
不幸的是,由于显而易见的原因,您无法在x
引用上访问该方法。编译器找不到y()
方法声明类A
。直接在匿名类实例创建表达式上访问该方法的唯一方法,如下所示:
new A() {
public void y()
{
}
}.y();
但这几乎没用。
或者你可以从另一个类A
的方法中调用它,你可以在匿名内部类中覆盖它。
class A {
public void demo() {
}
}
A obj = new A() {
public void demo() {
demo2();
}
public void demo2() {
System.out.println("Hello");
}
};
obj.demo();
答案 1 :(得分:0)
您可以定义此类方法,但只能从同一抽象类中的其他方法访问它:
abstract class a
{
public void method()
{
}
}
class b
{
public static void main(String arr[])
{
a x=new a()
{
public void y()
{
}
public void method() {
// call y()
y();
};
}
}