java 关于匿名内部类

1,简单来说就是 Tthread类(线程类) 中的一个方法 Thread.currentThread() 是指获取当前运行的线程对象 例如: Thread.currentThread().getName() 就是获取当前运行的线程的名称 简单来说这就差不多了 可能不完整 谁让我是新手呢... Thread t=Thread.currentThread().getName(), t.getName. 熟记这种书写格式。对今后学习很有帮助。 2,如果匿名类实现了一个接口,它的主体必须实现接口的方法。(下面的例子超级经典) 1.interface pr   2.{   3.  void print1();   4.}   5.  6.public class noNameClass    7.{   8.   public pr dest()   9.   {   10.       return new pr(){   11.       public void print1()   12.       {   13.         System.out.println("Hello world!!");   14.       }   15.    };   16.}   17.  18.public static void main(String args[])   19.{   20.    noNameClass c =  new noNameClass();   21.    pr hw=c.dest();   22.    hw.print1();   23.}   24.}

2 package com.l;

public class DemoXiancheng2 {

public static Demointerfence a(){   return new Demointerfence() {        @Override    public void print() {     // TODO Auto-generated method stub     System.out.println("this is a niming neibu lei");         }   };  }  public static void main(String[] args) {   // TODO Auto-generated method stub   //DemoXiancheng2 de=new DemoXiancheng2();   Demointerfence demoi=DemoXiancheng2.a();   demoi.print();

}

} 总结:new建立了一个Demointreence的对象,而后面{...}中的操作默认作用于这个对象。请速记,匿名(父类,抽象类,接口这些玩意,这些内容需要记住,见到别慌) *一个抽象类是不能直接new 的,必须先有实现类了我们才能new出它的实现类。  上面的伪代码(方法)就是表示new 的是Father(抽)的实现类,这个实现类是个匿名内部类。 注意:    ·匿名内部类不能有构造方法。    ·匿名内部类不能定义任何静态成员、方法和类。    ·匿名内部类不能是public,protected,private,static。    ·只能创建匿名内部类的一个实例。    ·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。    ·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。    ·内部类只能访问外部类的静态变量或静态方法。

作用:1,简化写法,省去了一个中间类 2,有一个类Child,它既想继承Parent的count()方法,又想实现ICount接口中的count方法,这个时候怎么办呢?内部类就可以大显身手了:    class Child extends Parent {      ICount getCount() {        return new ICount {          int i = 0;          int count() {           return (i *= 2);          }        }      }    }

时间: 2024-09-30 04:30:01

java 关于匿名内部类的相关文章

java笔记--匿名内部类和静态内部类的理解和使用

匿名内部类 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3889467.html  "谢谢-- 1.由于局部内部类并不可见,因此不如使用匿名内部类替代. 只有当需要定义或重写类的构造方法,或者需要多个类的对象时,才建议使用局部内部类.2.由于构造方法必须与类名相同,而匿名内部类没有类名,因此不能为其定义构造方法. 如果程序代码非常简单,则使用匿名内部类会使结构比价清晰.反之则不推荐使用匿名内部类.3.匿名内部类常用于Swing中

对 Java 的匿名内部类理解

对 Java 的匿名内部类理解 JAVA面向对象三大特性:封装.继承.多态. 多态:可以理解为大千世界中的对象在不同的环境下可能会有多种形态. Java中多态存在的前提:必须存在继承.父类的引用指向子类的对象. 匿名内部类:就是没有名字的内部类,所以匿名内部类只能使用一次. 通常使用匿名内部类来简化代码编写,但使用匿名内部类有个前提条件:必须继承一个父类或实现一个接口. 案例1:不使用匿名内部类来实现抽象方法 /** * @ Author: LightningLi * @ Date: 18/12

java中匿名内部类总结

在java的世界里,提供了匿名内部类语法糖,用于帮助大家简化代码,本文简要从接口,抽象类以及常规类以代码的形式描述其常用模式. 1. 接口模式 public interface IWriter { void write(); } public static void main(String[] args) { IWriter writer = new IWriter() { @Override public void write() { System.out.println("IWriter w

Java中匿名内部类

匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法 abstract class Person { public abstract void eat(); } class Child extends Person { public void eat() { System.out.println("eat something"); }

java中匿名内部类的匿名构造函数是怎么用的?

下面的例子说明匿名内部类的匿名构造函数的用法 (视频下载) (全部书籍) 例2.7.2_0 interface FigureMark_to_win {    void whoAmI();}public class Test {    public static void main(String[] args) {        FigureMark_to_win ttm = new FigureMark_to_win() {            private String msg = "三角

为什么说Java匿名内部类是残缺的闭包

前言 我们先来看一道很简单的小题: public class AnonymousDemo1 { public static void main(String args[]) { new AnonymousDemo1().play(); } private void play() { Dog dog = new Dog(); Runnable runnable = new Runnable() { public void run() { while(dog.getAge()<100) { // 过

java基础学习——29、匿名内部类

Java中匿名内部类的总结: 匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法 abstract class Person { public abstract void eat(); } class Child extends Person { public void eat() { System.out.println("eat somet

java 匿名内部类 js 闭包

最近在看js,看到closure(闭包)这一块儿的时候就想到了 java的匿名内部类 两者都有涉及到变量/参数的引用问题. 先说java的匿名内部类,他的定义我就不多做说明了,可以参考地址 http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html .我们今天主要说: 1.Why cannot an anonymous class access local variables in its enclosing

java之内部类(InnerClass)----非静态内部类、静态内部类、局部内部类、匿名内部类

提起java内裤类(innerClass)很多人不太熟悉,实际上类似的概念在c++里面也有,那就是嵌套类(Nested Class),关于这俩者的区别,在下文中会有对比.内部类从表面上看,就是在类中定义了一个类(下文可以看到,内部类可以在很多地方定义),而实际上并没有那么简单,乍看上去内部类似乎有些多余,他的用处可能对于初学者来说并不是那么显著,但是随着对他的深入了解,你会发现java的设计者在内裤类上面的确是用心良苦.学会使用内部类,是掌握java高级编程的一部分,他可以让你更优雅的设计你的程