JAVA学习--匿名类的使用

 1 public class TestProduct {
 2     public static void main(String[] args) {
 3         TestProduct t = new TestProduct();
 4         //方式一:创建一个实现Product接口的类的对象,并将此对象传入方法中
 5         NoteBook n = new NoteBook();
 6         t.show(n);
 7         //方式二:创建一个实现Product接口的匿名类的对象
 8         Product p = new Product(){
 9             public void getName(){
10                 System.out.println("Galaxy Note3");
11             }
12             public void getPrice(){
13                 System.out.println("¥5288");
14             }
15         };
16         //方式三:创建一个实现Product接口的匿名类的匿名对象
17         t.show(new Product(){
18             public void getName(){
19                 System.out.println("Iphone5s");
20             }
21             public void getPrice(){
22                 System.out.println("¥5288");
23             }
24         });
25         System.out.println();
26         Product p1 = t.getProduct();
27         p1.getName();
28         p1.getPrice();
29
30     }
31
32     //局部内部类的使用
33     public Product getProduct(){
34 //        //方式一:实现Product接口的局部内部类
35 //        class Camera implements Product{
36 //
37 //            @Override
38 //            public void getName() {
39 //                System.out.println("数码相机");
40 //            }
41 //
42 //            @Override
43 //            public void getPrice() {
44 //                System.out.println("4000");
45 //            }
46 //
47 //        }
48 //        return new Camera();
49         //方式二:实现Product接口的匿名局部内部类
50         return new Product(){
51             @Override
52             public void getName() {
53                 System.out.println("电纸书");
54             }
55
56             @Override
57             public void getPrice() {
58                 System.out.println("1000");
59             }
60         };
61
62     }
63
64     public void show(Product p){
65         p.getName();
66         p.getPrice();
67     }
68 }
69
70 interface Product{
71     void getName();
72
73     void getPrice();
74 }
75
76 class NoteBook implements Product{
77     public void getName(){
78         System.out.println("HP笔记本");
79     }
80     public void getPrice(){
81         System.out.println("¥5000");
82     }
83 } 
时间: 2024-12-20 01:08:53

JAVA学习--匿名类的使用的相关文章

Java学习-匿名类

1.筛选出符合条件的Hero:要求hp>100 && damage<50 匿名类实现: 先定义接口HeroChecker,其中的test()方法实现了Hero的筛选 1 package generic; 2 3 import charactor.Hero; 4 5 public interface HeroChecker { 6 public boolean test(Hero h); 7 } 1 package generic; 2 3 import java.util.Ar

Java学习-023-Properties 类 XML 配置文件读取及写入源代码

之前的几篇 Properties 文章已经讲述过了 Java 配置文件类 Properties 的基本用法,查看 JDK 的帮助文档时,也可看到在 Properties 类中还有两个方法 loadFromXML(InputStream) 和 storeToXml(OutputStream, String, String),由方法名中的 xml 不难确定这两个方法分别是读取/写入数据到 xml 文件.JDK 文档部分如下所示: 因而此文将通过源码实例演示 Properties 类是如何将数据写入

Java通过匿名类来实现回调函数

在C语言中,函数名可以当做函数指针传递给形参从而实现回调 void f1() { printf("f1()\n"); } void f2() { printf("f2()\n"); } void f3() { printf("f3()\n"); } void do_func(void(*f)()) { f(); } int main() { do_func(f1); do_func(f2); do_func(f3); } 在C++11中,实现回调

java中匿名类的注意细节

abstract class Outer{ int num; public Outer(int x){ num = x; } public abstract void show1(); public abstract void show2(); } public class PC{ public static void main(String[] args){ new Outer(55)//构造父类部分 //子类重写部分 { public void show1(){ System.out.pri

java:使用匿名类直接new接口

java中的匿名类有一个倍儿神奇的用法,见下面代码示例: package contract; public interface ISay { void sayHello(); } 上面是一个简单的接口,下面是如何使用: package jimmy; import contract.ISay; public class Program { public static void main(String[] args) { ISay say = new ISay() { public void say

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

浅谈Java的匿名类

在实际的项目中看到一个很奇怪的现象,Java可以直接new一个接口,然后在new里面粗暴的加入实现代码.就像下面这样.那么问题来了,new出来的对象没有实际的类作为载体,这不是很奇怪吗? 思考以下代码的输出是什么? Runnable x = new Runnable() { @Override public void run() { System.out.println(this.getClass()); } }; x.run(); 实际答案是出现xxxx$1这样一个类名,它是编译器给定的名称.

Java之匿名类讲解

参考https://blog.csdn.net/jiaotuwoaini/article/details/51542059 匿名类,正如名字一样在java中没有名字标识的类,当然了编译后还是会安排一个名字的. 下面是一个关于匿名类的简单例子: public class Client { public static void main(String[] args) throws InterruptedException { Thread t=new Thread(new Runnable() {

JAVA学习--Calendar 类的应用

Calendar 类的应用 Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用 Calendar 类进行时间和日期的处理. java.util.Calendar 类是一个抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 Calendar c = Calendar.getInstance();