java中一个类中可以实现两个接口的匿名内部类吗?如:
interface dianran{
abstract void dr();
}
interface pool{
abstract void rs();
}
public class demo implements dianran,pool{
public static void main(String args[]) {
new dianran() {
public void dr() {
}
}.dr();
new pool(){
public void rs() {
}
}.rs();
}
}
为什么会出现小XX?
你在方法里写了方法,方法里面不能套方法,还有类名最好大写
interface dianran {
abstract void dr();
}
interface pool {
abstract void rs();
}
public class demo implements dianran, pool {
public static void main(String args[]) {
new dianran() {
@Override
public void dr() {
}
}.dr();
new pool() {
@Override
public void rs() {
}
}.rs();
}
@Override
public void dr() {
}
@Override
public void rs() {
}
}
因为你的demo类实现了两个接口,public class demo implements dianran,pool
但没有实现这些接口的方法,所以小XX提示 “The type demo must implement the inherited abstract method pool.rs()”,意思就是让你实现
pool的rs()方法,之后又会要求你实现dianrand 的 dr()方法。你在mian方法里实现的两个匿名内部类,与这没关系
@Override
public void rs() {
// TODO Auto-generated method stub
}
@Override
public void dr() {
// TODO Auto-generated method stub
}
你把鼠标放到 demo 这个英文这里,暂停一秒别动,会显示 1. Add unimplemented methods 2. Make type 'demo' abstract
你点击 Add unimplemented methods 即可
兄弟,main方法里面你的匿名内部类用的是对的。
你报错的原因是:你实现了dianran, pool两个接口,但是这两个接口里的抽象方法你没有在demo类中实现,所以会有XX;
main方法里面你的匿名内部类用的是对的。
解决方法 : 在demo类中实现dr()和rs()这两个方法,就可以了;
正确的demo代码应该是这样的:
public class Demo implements Dianran,Pool {
public static void main(String[] args) {
new Dianran() {
public void dr() {
}
}.dr();
new Pool(){
public void rs() {
}
}.rs();
}
@Override
public void rs() {
}
@Override
public void dr() {
}
}
兄弟,额外说一句,类名记住要大写,我贴出的代码是大写的,你可以改成小写的,这就不会错了。
你也可以直接把下面的代码贴到你的demo里就可以了
@Override
public void rs() {
}
@Override
public void dr() {
}
可以实现两个接口的匿名内部类会
会出现小XX是:
单继承多实现
先简单看一下这篇文章 https://blog.csdn.net/sinat_34344123/article/details/81942427
当然可以,不过你这个是什么骚操作。你在你的类上面实现了两个接口,
但是接口方法你没有写出来啊。在main()方法中使用的匿名内部类没有问题.你重写了对应的方法.