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");
	}
	
}

  

posted @ 2016-01-24 14:18  GGRoddick  阅读(131)  评论(0编辑  收藏  举报