永发信息网

抽象类,实例化 ,谁能解释下这是什么东西

答案:6  悬赏:0  手机版
解决时间 2021-12-23 04:55
  • 提问者网友:星軌
  • 2021-12-22 09:09
abstract class Test{ abstract String getname();}Test test = new Test(){ String getname(){ return "name"; }};
最佳答案
  • 五星知识达人网友:蕴藏春秋
  • 2021-12-22 09:31
首先,抽象类不能直接new 对象(但是可以父类引用指向子类对象)

你的例子中,abstract class Test{
abstract String getname();
}
是一个抽象类,所以不能通过Test test=new Test()来new对象

但是,Test test = new Test(){
String getname(){
return "name";
}
}中的new Test(){
String getname(){
return "name";
}
},实际上相当于是一个实现了Test抽象类的对象(实现了抽象方法getname()),所以可以用new了
只不过,这里是一个匿名类罢了
不知道这么解释,你理解么???

还有不理解的话,可以追问
全部回答
  • 1楼网友:深街酒徒
  • 2021-12-22 14:02
{ String getname(){ return "name"; } 这是一个匿名类(可以说是没有名的类)覆写了Test中的抽象方法。
  • 2楼网友:蕴藏春秋
  • 2021-12-22 13:24
对。抽象类是不能被实例化的。抽象类可以很方便的解决很多问题。通常用于多态。决个简单例子吧,比如我们有一个eat(food food)方法。food是抽象类。beef、meat类继承并实现了这个抽象类。可以写 food beef=new beef();food meat=new meat(); 这是我们不管他是beef还是meat都可以直接调用eat(beef)和eat(meat),这样省去了很多麻烦
  • 3楼网友:神的生死簿
  • 2021-12-22 13:01
定义类的时候前面abstract修饰的为抽象类,抽象类中所有的方法都必须得是抽象的方法,想实例化抽象类则必须重写其中的抽象方法: abstract class Test{ abstract String getname(); } 上面的代码为定义了抽象类Test Test test = new Test(){ String getname(){ return "name"; } }; 上面的代码为实例化抽象类的一个对象,即new了一个该类的对象test,因为调用了该类的对象,所以重写类类中的方法,即 String getname(){ return "name"; }
  • 4楼网友:慢性怪人
  • 2021-12-22 11:25
抽象类:不允许被实例化的类,简单理解为不能直接进行new操作。 abstract class Test{ abstract String getname(); } 测试的抽象类,比如药物的测试,饮料的测试,肉类的测试,那么他们都有一个共同的方法,即:返回测试的名称;这个就可以抽象出来,更具有普遍含义。 之所有不能实例化抽象类,因为它包含抽象方法。 Test test = new Test(){ String getname(){ return "name"; } }; 这个相当于覆写了Test类中的抽象方法,所以此处可以进行实例化 --------------------------------------------------------------------------------- 个人拙见,仅供参考!!
  • 5楼网友:洎扰庸人
  • 2021-12-22 10:03
new Test()后面,是匿名类,可认为实现了抽象类Test的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯