采访者问:我们可以实例化一个抽象类吗?我说,不,他告诉我 - 错,我们可以.
我对此有点争论.然后他告诉我自己在家里试试.
abstract class my {
public void mymethod() {
System.out.print("Abstract");
}
}
class poly {
public static void main(String a[]) {
my m = new my() {};
m.mymethod();
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我正在创建我的类的实例并调用抽象类的方法.有人可以向我解释一下吗?在我的采访中我真的错了吗?
这两种实例化类的新对象的方法有什么区别,如下所示:
Test t1=new Test();
Test t2=new Test(){ };
Run Code Online (Sandbox Code Playgroud)
当我尝试下面的代码时,我可以看到两个对象都可以访问该方法foo(),但是t2无法访问variable x(variable x无法解析):
public class Test
{
int x=0;
public void foo(){ }
public static void main (String args[])
{
Test t1=new Test();
Test t2=new Test(){ };
t1.x=10;
t2.x=20;
t1.foo();
t2.foo();
System.out.println(t1.x+" "t2.x);
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个关于抽象类的问题.
首先......我正在使用谷歌翻译,对不起:(我希望你理解.
如果无法实例化抽象类,那么这段代码是什么:
public class Ppal {
public void start(){
ABS clsAbs = new ABS() {
@Override
public void absMetod() {
}
};
clsAbs.metod();
}
}
Run Code Online (Sandbox Code Playgroud)
ABS:
public abstract class ABS{
public void metod(){}
public abstract void absMetod();
}
Run Code Online (Sandbox Code Playgroud)
ABS clsAbs = new ABS () {...这不是一个例子吗?可以使用clsAbs并且不能使用抽象类,只能创建抽象模型......
它可以用作匿名类,但这(ABS clsAbs = new ABS () {...)不是匿名的.
非常感谢你提前!