Java面向对象高级--匿名内部类-阿里云开发者社区

开发者社区> 吴英强> 正文

Java面向对象高级--匿名内部类

简介: <h1>1、匿名内部类的定义</h1> <p>内部类:在一个类中,还有另外一个类称为内部类。</p> <p>匿名内部类:如果一个类在整个操作中只使用一次的话,就可以将其定义为匿名内部类。匿名内部类实在抽象类和接口的基础上发展起来的。</p> <p></p> <pre name="code" class="java">interface A{ public void printIn
+关注继续查看

1、匿名内部类的定义

内部类:在一个类中,还有另外一个类称为内部类。

匿名内部类:如果一个类在整个操作中只使用一次的话,就可以将其定义为匿名内部类。匿名内部类实在抽象类和接口的基础上发展起来的。

interface A{
	public void printInfo() ;	//定义接口 
}
class B implements A{	// 实现接口
	public void printInfo(){
		System.out.println("Hello World!!!") ;
	}
};
class X {
	public void fun1(){
		this.fun2(new B()) ;
	}
	public void fun2(A a){
		a.printInfo() ;
	}
};
public class NoInnerClassDemo01{
	public static void main(String args[]){
		new X().fun1() ;		// 实例化X类的对象,并调用fun1()方法
	}
};

如果:此时B类只使用一次的话,就没有必要为其单独定义一个类。此时可以使用匿名内部类。

interface A{
	public void printInfo() ;	// 
}
class X {
	public void fun1(){
		this.fun2(new A(){
				public void printInfo(){
					System.out.println("Hello World!!!") ;
				}
			}
			) ;
	}
	public void fun2(A a){
		a.printInfo() ;
	}
};
public class NoInnerClassDemo02{
	public static void main(String args[]){
		new X().fun1() ;		// 实例化X类的对象,并调用fun1()方法
	}
};

2、总结

1、在Java开发中经常使用到各种开发框架,在框架上会大量的引用匿名内部类。
2、匿名内部类是在抽象类和接口的基础上发展起来的。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java面向对象高级--匿名内部类
<h1>1、匿名内部类的定义</h1> <p>内部类:在一个类中,还有另外一个类称为内部类。</p> <p>匿名内部类:如果一个类在整个操作中只使用一次的话,就可以将其定义为匿名内部类。匿名内部类实在抽象类和接口的基础上发展起来的。</p> <p></p> <pre name="code" class="java">interface A{ public void printIn
842 0
(七)java类和对象
   <span style="font-size:18px"> 一个类定义一个新的数据类型,也就是定义了一个逻辑框架,定义了它的成员之间的关系。可以通过这种类型来声明该类型的对象,通过new关键词来实例化对象,也就是为该类型的对象动态的分配物理内存空间,这个分配过程实在运行时发生的。内存空间是有限的,因此运行时分配内存有可能不成功,会造成运行时异常。<br>     声明时的变量存储的
976 0
Java基础-07.总结private,this,封装,static,成员方法变量,局部变量匿名对象
1:成员变量和局部变量的区别(理解)(1)在类中的位置不同成员变量:类中方法外局部变量:方法定义中或者方法声明上(2)在内存中的位置不同 成员变量:在堆中局部变量:在栈中(3)生命周期不同(成员的创建与销毁时间)成员变量:随着对象的创建而存在,随着对象的消失而消失局部变量:随着方法的调用而存在,随着方法的调用完毕而消失(4)初始化值不同成员变量:有默认值局部变量:没有默认值,必须定义,赋值
1361 0
Java中的匿名对象
//Java中的匿名对象: //匿名对象就是没有名字的对象 class Student{ public void tell(){ System.out.println("Hello World"); } } public class HelloWorld { public static...
501 0
匿名内部类方式构建对象导致序列化失败
###问题描述: 以下代码为问题代码: ``` public class ItemDO implements Serializable { private static final long serialVersionUID=-463144769925355007L; ... private Map langAndTitleMap; ...
1753 0
Java中类的创建及类与对象的关系
//import java.util.Scanner; //创建一个类 class Person{ //属性和方法的定义不是必须的 //属性 String name ; int age ; //方法 public void tell(){ System.
841 0
Java面向对象高级--对象的多态性
<p><img src="http://img.blog.csdn.net/20130926155033406" alt=""></p> <h1>向上转型:通过子类进行父类对象实例化操作。如果调用的方法被子类覆写过,则肯定调用被覆写过的方法。注意:转型之后,因为操作的是父类对象,所以无法找到子类中定义的新方法。</h1> <p></p> <pre name="code" class=
1061 0
Java面向对象高级--Object类
<p><span style="white-space:pre"></span>在Java中一切的类都是以继承的关系存在的,</p> <p></p> <pre name="code" class="java">class Person{}</pre> <span style="white-space:pre"></span>如果一个类在定义时,没有明确指明继承那个类,则默认继承Obj
853 0
Java面向对象高级--实例分析—宠物商店
<h1>1、实例要求</h1> <div> <span style="white-space:pre"></span>实现一个宠物商店,在宠物商店中可以由多种宠物,(由用户决定数量)。试表示出此种关系,并要求可以根据宠物的关键字查找到相应的宠物信息。所需要的宠物信息自行设计。</div> <h1>2、实例中主要使用到的知识点:接口、对象数组。</h1> <h1>3、分析</h1>
1419 0
+关注
329
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载