`
Tristan_S
  • 浏览: 360973 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

匿名内部类就是重写父类或接口的方法

    博客分类:
  • jj
 
阅读更多
copy http://blog.csdn.net/cntanghai/article/details/6094481

使用匿名内部类课使代码更加简洁、紧凑,模块化程度更高。内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到。然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式:第一种,继承一个类,重写其方法;第二种,实现一个接口(可以是多个),实现其方法。下面通过代码来说明:

package com;

public class TestAnonymousInterClass {
	public static void main(String args[]) {
		TestAnonymousInterClass test = new TestAnonymousInterClass();
		test.show();
		
	}

	// 在这个方法中构造了一个匿名内部类
	private void show() {
		Out anonyInter = new Out() {// 获取匿名内部类实例
			@Override
			void show() {// 重写父类的方法
				System.out.println("this is Anonymous InterClass showing.");
			}
		};
		anonyInter.show();// 调用其方法
		
		Out out = new Out();
		out.show();// 调用其方法
	}
}

// 这是一个已经存在的类,匿名内部类通过重写其方法,将会获得另外的实现
class Out {
	void show() {
		System.out.println("this is Out showing.");
	}
}



程序运行的输出结果为:

this is Anonymous InterClass showing.

   所以在这里看出,匿名内部类有了自己的实现。其实很简单,使用匿名内部类是因为我这地方需要有点什么特殊的实现,所以我就在这地方把具体实现也给了出来了。然后我就在这地方获取它的实例,调用它的方法。
   接口的方式,只要把父类换成接口就行了,没必要给出代码了。

   使用匿名内部类时我们不要忘了我们的目的,我们只是在这地方想对某个类有特殊的实现。而不要想得太多,在匿名内部编写其它的方法。在匿名内部类中编写的自己的方法是不可见的。此种做法是毫无意义的,当然一般也不会这么做。在这里只是告诉初学者对于匿名内部类不要想的太多,而要这么想:匿名内部类就是重写父类或接口的方法

匿名内部类是没有名字的,所以我们没办法获得其类型,而只能把它当作超类或接口类型来使用。

分享到:
评论

相关推荐

    【05-面向对象(下)】

    •一个类实现了一个或多个接口之后,这个类必须完全实现这些接口里所定义的全部抽象方法(也就是重写这些抽 象方法); •否则,该类将保留从父接口那里继承到的抽象方法,该类也必须定义成抽象类。 接口...

    JAVA面向对象详细资料

    Java面向对象 1 1 学习方法与要求 1 2 面向对象语言与面向过程语言的区别 7 3 面向对象?...41.2 匿名内部类 70 41.3 成员内部类 71 41.4 静态内部类 72 41.5 局部内部类 73 42 作业 :商超案例,以OOP重构 73

    Java经典编程源码基础例程300.zip

    实例068 匿名内部类的简单应用 104 实例069 静态内部类的简单应用 105 实例070 实例化Class类的几种方式 107 实例071 查看类的声明 108 实例072 查看类的成员 110 实例073 查看内部类信息 112 实例074 动态设置类的...

    疯狂JAVA讲义

    5.6.2 重写父类的方法 145 5.6.3 父类实例的super引用 146 学生提问:我们只是创建了一个Ostrich对象时,哪来的Bird对象? 147 5.6.4 调用父类构造器 148 学生提问:为什么我创建Java对象时从未感觉到java.lang....

    JAVA面试题最全集

    将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载 finally?再异常处理时...

    安卓java读取网页源码-AndroidLearningNotes:第一次提交

    成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用 谈谈对kotlin的理解 闭包和局部内部类的区别 string 转换成 integer的方式及原理 java深入源码级的面试题(有难度) 哪些情况下的对象会被...

    javaSE代码实例

    15.4.2 基于接口实现的匿名内部类 335 15.4.3 匿名内部类的初始化 337 15.4.4 匿名内部类作用的体现 337 15.5 理解内部类 339 15.6 内部接口 340 15.6.1 定义在类中的内部接口 340 15.6.2 定义在接口中...

    Java面试32个经典问题 .doc

    第一, 谈谈final, finally, finalize的区别。 (最常被问到) final修饰符(关键字) ...第二,Anonymous Inner Class(匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

    java 面试题 总结

    派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即...

    超级有影响力霸气的Java面试题大全文档

    派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装:  封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,...

    JAVA语言程序设计【高清版】.pdf

    77 5.5.1 static 77 5.5.2 final和abstract 79 5.5.3 this和super 84 5.6 方法重写 86 5.6.1 方法重写概述 86 5.6.2 应用重写的规则 89 5.6.3 调用父类构造方法 89 5.7 接口 90 5.7.1 多重继承中的...

    传智播客扫地僧视频讲义源码

    15_复数类_所有函数都写在类的内部 16_复数类_所有函数都写在类的外部_上 17_复数类_所有函数都写在类的外部_下 18_复数类_所有函数都写在类的外部(h和cpp分开) 19_类模板中的static关键字 20_案例_数组模板类_需求...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例121 匿名内部类的简单应用 153 实例122 静态内部类的简单应用 154 第2篇 Java高级应用 第6章 多线程技术 158 6.1 线程的基础 159 实例123 新建无返回值的线程 159 实例124 查看线程的运行状态 160 实例125 查看...

Global site tag (gtag.js) - Google Analytics