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