精华内容
下载资源
问答
  • 匿名内部类继承的关系

    千次阅读 2017-11-07 22:03:55
    当我们实现一个抽象方法时。传统的做法就是创建一个子类去继承抽象或者实现接口 然后实现里面的抽象方法 ,而匿名内部类大大简化了着一个步骤!看文件

    当我们实现一个抽象方法时。传统的做法就是创建一个子类去继承抽象类或者实现接口 然后实现里面的抽象方法 ,而匿名内部类大大简化了着一个步骤!


    关于匿名内部类:


    传统做法 :如过定义了一个接口A1 我们知道接口A1里面的方法是抽象的,那么实现A1的传统的方法就是
    找一个B类去实现这个A1接口里面的抽象方法!看代码


    public class NoInnerClassDemo2 {
    public static void main(String[] args) {
    new X1().fun1();//实例化X类对象并调用fun1()方法
    }


    }
    interface A1{  //定义接口A1
    public void printlnfo();  //定义一个接口的抽象方法
    }
    class B implements A{   //让B 去实现接口A1的抽象方法
    public void printlnfo(){
    System.out.prinltn("Hello World");
    }
    }
    class X1{//定义X1类
    public void fun1(){   //定义fun1()方法
    this.fun2(new B());
    }
    public void fun2(A1 a){  //接受接口的实例
    a.printlnfo();    //调用接口方法
    }
    }


    //假如这个接口的实现类B类只是用了一次 那么我们就没必要再单独用了,这个时候就要用到匿名内部类来完成了,看下面的代码


    public class NoInnerClassDemo2 {


    public static void main(String[] args) {

    new X1().fun1();//实例化X1类对象并调用fun1()方法

    /* X x = new X();
    x.fun1();*/
    }


    }
    interface A1{    //定义接口A1
    public void printlnfo();    //定义一个接口的抽象方法
    }
    class X1{    //定义X类
    public void fun1(){    //定义fun1()方法
    this.fun2(new A1(){    //匿名内部类
    public void printlnfo(){   //实现接口中的抽象方法
    System.out.println("匿名的实现方法啊");
    }
    });
    }
    public void fun2(A1 a){//接受接口的实例
    a.printlnfo();//调用接口方法
    }
    }


    //总结: 匿名内部类 其实比你用单独一个类 去实现接口 或 继承抽象类 里面的抽象方法方便很多!还要注意 这里面综合了 什么是实例化?
    就是你需要用到哪个类就new那个类,然后用new出来的 对象名.方法名()来调用里面的方法! 而且本题中用的实例化呢
    是根据匿名对象调用的 如主类中 new X1().fun1();//实例化X1类对象并调用fun1()方法(根据匿名对象直接调用方法)


    展开全文
  • 匿名内部类可以继承其他,但不能用extends。 可以实现某接口,但不能用implements。匿名内部类,就是没有名字的内部。故没有构造器,必须调用基类的构造器。所以是继承基类的。匿名内部类经常被用来覆盖...

    匿名内部类:
    可以继承其他类,但不能用extends。
    可以实现某接口,但不能用implements。

    匿名内部类,就是没有名字的内部类。故没有构造器,必须调用基类的构造器。所以是继承基类的。匿名内部类经常被用来覆盖基类的某些方法:

    class A{
        public void a(){
            System.out.orintln("甲");
        }
        public void b(){
            System.out.orintln("乙");
        }
    }
    
    public class B{
        public static A getA(){
            return new A(){
                public void a(){
                    System.out.println("丙");
                }
            }
        }
    }

    上面的例子,A类的a()方法打印“甲”,但B类的getA()方法返回的A类对象的引用,是打印“丙”的,因为a()方法被重写了。

    A myA = B.getA();
    myA.a(); //输出 丙
    myA.b(); //输出 乙

    由上面代码可知,A类明显就是匿名内部类的基类,因为它可以调用b()方法。

    所以匿名内部类必须继承自某个基类,但Java只接受单继承,所以就不可能再在后面加个extends 某个类。

    实现接口的情况同理可证 ,因为语法规定匿名内部类只能实现一个接口。

    展开全文
  • 一个匿名内部类一定是继承一个或者实现一个接口,new了这个父类或接口名的内部还带内容,我就想问能不能还能不能继承其他或实现其他接口。 如果我表达不好,不好理解, 那问题简化就是 匿名内部类能不能...
  • 一个关于匿名内部类的两个问题:匿名内部类能否继承其他的 ?又能否实现接口?
  • 匿名内部类的实现和使用例1(实现接口)例2(继承类) 什么是匿名内部类匿名内部类,顾名思义,就是不知道这个到底是什么名字,也就是不知道类名。 匿名内部类的使用场景? 匿名内部类适合创建那种只需要使用...

    什么是匿名内部类?

    匿名内部类,顾名思义,就是不知道这个类到底是什么名字,也就是不知道类名。

    匿名内部类的使用场景?

    匿名内部类适合创建那种只需要使用一次的类,也就是说创建一个匿名内部类,只需要用一次即可。

    匿名内部类如何创建?

    new 类名(参数) | 实现接口()
    {
    // 匿名内部类的类体部分
    }
    从上面的定义可以看出,匿名内部类必须继承一个父类,或实现一个接口,但最多只能继承一个父类,或者实现一个接口。
    两个规则:
    	匿名内部类不能是抽象类。
    	匿名内部类不能定义构造器。由于匿名内部类没有类名,所以无法定义构造器,但匿名内部类可以初始化块,可以通过初始化块来完成构造器需要完成的工作。
    

    匿名内部类的实现和使用

    例1(实现接口)

    首先,定义一个匿名类要实现的接口,代码如下

    public interface Product{
     double getPrice();
     double getName();
    

    然后,定义一个实体类,实体类定义一个方法,方法的参数为上述的接口对象,到时候会传入一个匿名类对象,这个匿名类实现了上述创建的接口,代码如下

    public class Anony{
    	public void test(Product product){
    	System.out.println("购买了一个"+product.getName()+",花掉了"+product.getPrice());
    	}
    }
    

    最后测试运行:

    pubic class Test{
    	public static void main(String[] args){
    		Anony anony=new anony();
    		// 注意,此处要传入一个匿名类对象
    		anony.test(new Product(){
    			@Override
    			public double getPrice(){
    					return 578.6;
    				}
    			@Override
    			public String getName(){
    					return "联想笔记本";
    				}
    			}
    		);
    	}
    }
    

    输出:

    购买了一个联想笔记本,花掉了578.6
    

    总结:此处匿名内部类的作用就是实现了一个接口,创建了一个实现了该接口的类的对象,然后重写了这个接口中的方法。

    例2(继承类)

    首先,定义一个匿名类需要实现的抽象类,代码如下:

    public abstract class Device{
    	private String name;
    	public abstract double  getPrice();
    	public String getName(){
    	 	return name;
    	}
    	public Device(){}
    	public Device(String name){
    		this.name=name;
    	}
    } 
    

    然后,定义一个实体类,实体类定义一个方法,方法的参数为上述的抽象类对象,到时候会传入一个匿名类对象,这个匿名类继承了上述创建的抽象类,代码如下

    public class Device{
    	public void test(Device device){
    		System.out.println("购买了一个"+device.getName()+"花费了"+device.getPrice());
    	}
    }
    
    

    最后测试运行:

    pubic class Test{
    	public static void main(String[] args){
    		Anony anony=new anony();
    		// 注意,此处要传入一个匿名类对象
    		anony.test(new Device("海尔电视机"){
    			@Override
    			public double getPrice(){
    					return 578.6;
    				}
    		);
    		Device device=new Device(){
    			@Override
    			public double getPrice(){
    				return 556.56;
    			}
    			@Override
    			public String getName(){
    				return "美的电视机";
    			}
    		};
    		annoy.test(device);
    	}
    }
    

    输出:

    购买了一个海尔电视机,花掉了578.6
    购买了一个美的电视机,花掉了556.56
    

    总结:对象匿名类中继承抽象类,对于抽象类里面的抽象方法,必须要重写,对象抽象类里面的非抽象方法,可重写也可以不重写。

    展开全文
  • 匿名内部类可以继承其他,但不能用extends。 可以实现某接口,但不能用implements。 匿名内部类,就是没有名字的内部。故没有构造器,必须调用基类的构造器。所以是继承基类的。匿名内部类经常被用来覆盖基类...

    可以继承其他类或实现其他接口。不仅是可以,而是必须!
    匿名内部类:
    可以继承其他类,但不能用extends。
    可以实现某接口,但不能用implements。

    匿名内部类,就是没有名字的内部类。故没有构造器,必须调用基类的构造器。所以是继承基类的。匿名内部类经常被用来覆盖基类的某些方法:

    class A{
    public void a(){
    System.out.orintln(“甲”);
    }
    public void b(){
    System.out.orintln(“乙”);
    }
    }

    public class B{
    public static A getA(){
    return new A(){
    public void a(){
    System.out.println(“丙”);
    }
    }
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    上面的例子,A类的a()方法打印“甲”,但B类的getA()方法返回的A类对象的引用,是打印“丙”的,因为a()方法被重写了。

    A myA = B.getA();
    myA.a(); //输出 丙
    myA.b(); //输出 乙
    1
    2
    3
    由上面代码可知,A类明显就是匿名内部类的基类,因为它可以调用b()方法。

    所以匿名内部类必须继承自某个基类,但Java只接受单继承,所以就不可能再在后面加个extends 某个类。

    实现接口的情况同理可证 ,因为语法规定匿名内部类只能实现一个接口。
    ————————————————
    版权声明:本文为CSDN博主「snail_xinl」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/snail_xinl/article/details/53470869

    展开全文
  • 可以。而且必须实现接口或继承其他
  • 在Swing开发时,大家应该经常用到下面的代码:JButton btnTest = new JButton();btnTest.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { // do something ... 通过匿名
  • Inner Class(内部)定义在中的。 Nested Class(嵌套)是静态(static)内部...(匿名内部类)匿名的内部是没有名字的内部。 匿名的内部不能extends(继承)其它,但一个内部类可以作为一个接口,
  • 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法 abstract class Person { public abstract void eat(); } class Child extends Person
  • 匿名内部类必须继承一个父类或实现一个接口;不能继承其他的,别的博文中一直写匿名内部类可以作为一个接口,由另一个内部实现,完全不明白是什么意思,本人也没有实现这个功能,欢迎大神评论解答。...
  • 匿名内部类是没有名字的内部类。不能继承其它,但一个内部类可以作为一个接口,由另一个内部类实现。
  • 回答:匿名内部类在实现时必须借助一个借口或者一个抽象或者一个普通来构造,从这过层次上讲匿名内部类是实现了接口或者继承,但是不能通过extends或implement关键词来继承类或实现接口。 匿名内部类即...
  • 匿名内部类可不可以继承或实现接口。为什么? 答:匿名内部类是没有名字的内部,不能继承其它,但一个内部类可以作 为一个接口,由另一个内部实现. 1、由于匿名内部类没有名字,所以它没有构造函数。因为没有构造...
  • Java内部匿名内部类的用法

    万次阅读 多人点赞 2016-07-21 15:46:41
    Java内部匿名内部类的用法 【尊重原创,转载请注明出处】http://blog.csdn.net/guyuealian/article/details/51981163一、内部: (1)内部的同名方法 内部类可以调用外部的方法,如果内部有同名方法...
  • 1. 匿名内部类总是默认实现某个接口或继承某个抽象。 2.不能有构造方法,只能有一个实例。 3. 不能定义在任何静态成员、静态方法。 4. 不能是public.protected.private static. 5. 匿名内部类为局部的,所以...
  • 分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!...可以继承其他或实现其他接口,在Swing编程和Android开发中常用此方式来实现事件监听和回调。 ...
  • Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它,是否可以implements(实现)interface(接口)? 答案: 可以继承其他或完成其他接口,在swing编程中常用此方式。
  • 匿名内部类

    2015-11-22 17:57:42
     匿名内部类出现的前提:必须存在一个,抽象,或者接口,来让匿名内部类继承或实现。  匿名内部类的格式: new 类名或者接口名() { 重写或者接口中的方法。 也可以自己定义新的方法。 }; 2、...
  • 继承类 public abstract class AbstructClass { abstract void pri(); } public class TestClass2 { public AbstructClass te(){ return new AbstructClass(){ void pri() { System....
  • 程序员你真的理解匿名内部类吗?

    千次阅读 多人点赞 2019-10-10 22:22:30
    为了加深各位对匿名内部类的印象、好奇心以及求知的渴望,咋们先来看一个程序,如果提到线程你会不会立马想到接口和继承?如果提到接口和继承你会不会立马想到匿名内部类? 开篇甜点 为了加深各位对匿名内部类的...
  • java内部之成员内部、局部内部匿名内部类

    千次阅读 多人点赞 2018-07-15 16:13:30
    2、局部内部(包含匿名内部类)。 成员内部 定义格式: 修饰符 class 名称 { 修饰符 class 名称 { //... } //... } 注意: 内部使用外部,可以随意访问,但是外部使用内部要借助内部的对象...
  •  成员内部、局部内部、静态内部匿名内部类  ③内部作为外部的一个成员,并依附于外部而存在。包括:成员内部、局部内部匿名内部类  ④内部类可以由private、public、protected、d
  • Java 匿名(匿名内部类)

    千次阅读 2020-12-25 23:41:48
    Java匿名(匿名内部类) 学习的参考博文:无恨之都 1. 初识 匿名 标准说法: 内部包括:成员、局部、匿名(匿名内部类)。 匿名概念: 匿名类可以使你的代码更加简洁 (JDK8之后Lambda更简洁)。 你可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 101,501
精华内容 40,600
关键字:

匿名内部类可以继承吗