JavaSE-匿名类_匿名内部类的使用

package com.btp.t2;

public class TestProduct {

	public static void main(String[] args) {
		TestProduct t=new TestProduct();
		//方式一:创建一个实现Product接口的类的对象
		NoteBook n=new NoteBook();
		t.show(n);
		//方式二:有对象名
		Product p=new Product(){

			@Override
			public void getName() {
				// TODO 自动生成的方法存根
				System.out.println("Galaxy Note3");
			}

			@Override
			public void getPrice() {
				// TODO 自动生成的方法存根
				System.out.println("$8000");
			}

		};
		t.show(p);

		//方式三:创建一个实现Product接口的匿名类的对象
		t.show(new Product(){

			@Override
			public void getName() {
				// TODO 自动生成的方法存根
				System.out.println("Iphone8s");
			}

			@Override
			public void getPrice() {
				// TODO 自动生成的方法存根
				System.out.println("$10000");
			}

		});
		System.out.println();

		Product p1=t.getProduct();
		p1.getName();
		p1.getPrice();
		Product p2=t.getProduct1();
		p2.getName();
		p2.getPrice();
	}

	public void show(Product p){
		p.getName();
		p.getPrice();
	}

	//局部内部类的使用
	//方式一:实现Product接口的局部内部类
	public Product getProduct(){
		class Camera implements Product
		{

			@Override
			public void getName() {
				// TODO 自动生成的方法存根
				System.out.println("数码相机");
			}

			@Override
			public void getPrice() {
				// TODO 自动生成的方法存根
				System.out.println("4000");
			}
		}
		return new Camera();
	}

	//方式二:实现Product接口的匿名局部内部类
	public Product getProduct1(){
		return new Product(){

			@Override
			public void getName() {
				// TODO 自动生成的方法存根
				System.out.println("电子书");
			}

			@Override
			public void getPrice() {
				// TODO 自动生成的方法存根
				System.out.println("¥1000");
			}

		};
	}

}

interface Product{
	void getName();

	void getPrice();
}

class NoteBook implements Product{

	@Override
	public void getName() {
		// TODO 自动生成的方法存根
		System.out.println("HP笔记本");
	}

	@Override
	public void getPrice() {
		// TODO 自动生成的方法存根
		System.out.println("$5000");
	}

}

  

时间: 2024-10-07 12:23:29

JavaSE-匿名类_匿名内部类的使用的相关文章

JavaSE 匿名类(Anonymouse Inner Class)实现

{相关信息}当一个内部类只创建一个对象,并且该类继承一个父类或者实现一个接口的时候,才考虑使用匿名类. {代码实现} package sup.orange.learn; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent

匿名类、内部类、匿名内部类-转

http://xdwangiflytek.iteye.com/blog/1340872   原文地址 前端时间在写.net项目中,一直错将.cs里的两个class当作内部类,原来是一个文件里的两个类而已,这让我想起了Java中的内部类,比较内部类,那么还有两个类,那就是匿名类和匿名内部类.今天我想就Java中的这三种类进行个比较. 我们知道在Java语言规范中可以做很多事,例如一个类或一个接口中可以声明一个类或接口,在一个方法中可以声明一个类,类与接口声明可以嵌套任意深度等. 匿名类: 1.ne

匿名内部类是一种特殊的局部内部类,它是通过匿名类实现接口

匿名内部类(必须掌握): 匿名内部类是一种特殊的局部内部类,它是通过匿名类实现接口. IA被定义为接口. IA I=new IA(){}; 注:一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类,没有类名,根据多态,我们使用其父类名. 因其为局部内部类,那么局部内部类的所有限制都对其生效. 匿名内部类是唯一一种无构造方法类. 匿名内部类在编译的时候由系统自动起名Out$1.class. 如果一个对象编译时的类型是接口,那么其运行的类型为实现这个接口的类. 因匿名内部类无构造方法

Java笔记十八.内部类和匿名类

内部类和匿名类 转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 一.内部类 1.定义 在一个类内部定义类,即为嵌套类(内部类).有如下几点特点:(1)嵌套类可以直接访问嵌套它的类的成员(变量和方法),包括private成员.但是,嵌套类的成员却不能被嵌套它的类直接访问.(2)内部类使得程序代码更为紧凑,程序更具模块化. 2.内部类实现方法 (1)类中定义和使用一个内部类 在类中直接定义的嵌套类的使用范围,仅限于这个类的内部.内部类的定义和普通

内部类与匿名类(转)

Java 中的内部类和匿名类* 为什么需要内部类? Java 内部类有什么好处?为什么需要内部类? 首先举一个简单的例子,如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时候,你可以建一个内部类实现这个接口.由于内部类对外部类的所有内容都是可访问的,所以这样做可以完成所有你直接实现这个接口的功能. 不过你可能要质疑,更改一下方法的不就行了吗? 的确,以此作为设计内部类的理由,实在没有说服力.真正的原因是这样的,java 中的内部类和接口

解决内存泄漏更加清楚的认识到Java匿名类与外部类的关系

1.事件起因 在做项目的时候,通过Android Studio的Memory Monitor窗口观察程序内存使用情况,发现当程序退出的时候,有一部分应该释放掉的内存没有释放掉,知道程序中应该有内存泄漏了.为了发现程序中的内存泄漏,我切换了IDE工具到Eclipse,里面安装了内存泄漏的分析工具MAT,具体怎么用MAT分析内存泄漏可以自己Google,我把我自己找到内存泄漏的地方贴出来 从上图中可以看到,有24M左右的内存被mView(其实它真正是一个Fragment)这个变量持有,导致Java垃

java匿名类和匿名对象及this的其他用法

/* 匿名内部类:就是内部类的简写格式. 必须前提:内部类必须继承或者实现一个类或者接口. 匿名内部类其实就是一个匿名 子类对象. 格式:new 父类对象 or 接口(){ 子类内容:(覆盖父类的, 而且可以增加自己的方法) }//相当于将 继承父类 和 new 的过程 写到了一起有某有!很方便有某有! */ class Outer{ int num; public Outer(){ num = 5; } class Inner{ int num; public Inner(){ num = 1

【转 Java 中的内部类和匿名类

 Java 中的内部类和匿名类 2008-10-16 13:47:41 标签:Java 内部类 匿名类 休闲 职场 Java 中的内部类和匿名类* 为什么需要内部类? Java 内部类有什么好处?为什么需要内部类? 首先举一个简单的例子,如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时候,你可以建一个内部类实现这个接口.由于内部类对外部类的所有内容都是可访问的,所以这样做可以完成所有你直接实现这个接口的功能. 不过你可能要质疑,更改一

Java的匿名类示例

本文将通过正则表达式来过滤文件夹中的某些特殊文件,并打印出来.这其中涉及到文件过滤器,其中应用到了匿名类. package date0815.demo1; /** * Java匿名内部类 * @author zzw * */ import java.io.File; import java.io.FilenameFilter; import java.util.Arrays; import java.util.regex.Pattern; public class Test1 { public