A:匿名内部类

    就是内部类的简化写法

B:前提

    这里的类可以是具体类也可以是抽象类

C:格式

    new 类名或者接口(){       //表示继承这个类或实现这个接口重写方法}

D:本质是什么呢?

    是一个继承了该类或者实现了该接口的子类匿名对象

E:案例实现

按要求来写一个匿名内部类与一个有名字的内部类进行对比要求:创建一个Inter接口,接口里面有个抽象方法print,print这个抽象方法有个输出语句,输出  print ,然后分别用 **有名字的内部类**   跟  **匿名内部类**  这两种方式去实现。

一,有名字的内部类(Outer)

package Demo_nimingneibulei;public class hasming {public static void main(String[] args) {Outer o =new Outer();               //创建对象o.method();                         //调用method()方法}}interface Inter{                            //定义接口public void print();                    //接口里面有一个print抽象方法
}class Outer{                                //有名字的内部类去实现了Inter这个接口,然后重写Inter接口里面抽象方法printclass Inner implements Inter{           //创建Inner这个类去实现Inter接口,Inner就是Inter的子类public void print(){                //重写Inter接口里面的方法System.out.println("print");}}public void method(){
①       Inner i = new Inner();i.print();②       new Inner().print();                //new Inner() 代表着Inter的子类对象,然后   .print() 再调用Inner里面重写之后的print()方法
//①②两种方法是一样的想过,②是①的另外一种形式
//      new Inter();                        //创建Inter对象,是错误的,因为Inter是抽象的,无法去实例化}
}

二,匿名内部类(Outer1)

package Demo_nimingneibulei;import Demo_nimingneibulei.Outer.Inner;public class Noname {public static void main(String[] args) {Outer1 o = new Outer1();                    //创建Outer1该类的对象oo.method();                                 //调用Outer1里面的method方法}
}interface Inter1 {public void print();
}class Outer1{                                       //创建匿名内部类public void method(){                           //匿名内部类是局部内部类的一种,所以必须写在方法里面//      new Inter();                                //直接创建Inter对象,不能这样写,因为Inter1是个接口是抽象的,无法实例化new Inter1(){                               //实现Inter接口,实现接口,必须重写Inter1接口里面的抽象方法print()public void print(){                    //重写Inter接口里面的print抽象方法System.out.println("print");}}.print();                                  //.之前的内容,代表在Inter1这个接口的子类对象,然后,我们就可以调用Inter1这个接口的子类对象里面的方法了,直接.print(),去调用该方法}
//匿名内部类与有名字的内部类相比,不用再写一个类名去实现接口或者去继承类了
}

面向对象(匿名内部类与有名字内部类的比较)相关推荐

  1. 面向对象(final/抽象类/接口/内部类)

    >final 关键字 1.final修饰类,这个类不能被被继承; 2.final修饰变量,这个变量的值不能发生改变,就是常量; 注意: final修饰的变量,必须要初始化赋值,否则报错; 赋值的 ...

  2. Java静态内部类、匿名内部类、成员式内部类和局部内部类

    内部类可以是静态(static)的,可以使用 public.protected 和 private 访问控制符,而外部类只能使用 public,或者默认. 成员式内部类 在外部类内部直接定义(不在方法 ...

  3. 匿名内部类可以访问private_内部类一篇文章搞定

    点击蓝字 关注我们 1.为什么使用内部类? 使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现, 对于内部类都没有影响 1.1.使用 ...

  4. 浅谈 Java中的静态内部类、匿名内部类、成员式内部类和局部内部类

    内部类可以是静态(static)的,可以使用 public.protected 和 private 访问控制符,而外部类只能使用 public,或者默认. 成员式内部类 在外部类内部直接定义(不在方法 ...

  5. java 命名内部类_如何把java SWT程序中的匿名内部类改写成命名内部类?

    展开全部 //请看最后一个e69da5e6ba9062616964757a686964616f31333363386134private class ,其实命名内部类跟普通的java程序一样写,只要知 ...

  6. JavaSE——面向对象高级(继承、final关键字、抽象类与接口、多态、Object类、内部类、包装类、可变参数)

    第3节 面向对象高级 一.继承 1.1 概述和使用 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类.继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法 ...

  7. day08面向对象-内部类、异常

    1 内部类 1.1 内部类的概述 将类定义在另一个类的内部则成为内部类.其实就是类定义的位置发生了变化. 在一个类中,定义在类中的叫成员变量,定义在函数中的叫成员函数,那么根据类定义的位置也可以分为成 ...

  8. Day16-01 P71 面向对象12什么是多态 P72 对象13:instanceof和类型转换 P73 static关键字详解 P74 抽象类 P75 接口的定义与实现 P76N种内部类

    Day16-01 P71 面向对象12:什么是多态 //父类Person package com.oop.demo06;public class Person {public void run(){S ...

  9. 面试轻松讲清楚 Java 面向对象的问题与知识(类与对象,封装,继承,多态,接口,内部类...)

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

最新文章

  1. camera客观测试_光学图像测试之屏幕色彩管理测试
  2. python读取txt文件并写入excel-Python实现读取txt文件并转换为excel的方法示例
  3. UA MATH524 复变函数2 指数、对数与三角函数
  4. 八成Java开发者解答不了的问题
  5. python爬虫提取a标签_Python爬虫 Pyppeteer获取a标签的文本和链接
  6. 【温故知新】HTML学习笔记(上)
  7. echarts 去掉网格线
  8. 基于Prometheus和Grafana打造业务监控看板
  9. cmd命令 - vue项目:单独安装vue-router
  10. java final 变量 大小写_java – 为什么“final static int”可以用作开关的大小写常量但不是“final static”...
  11. Invest授粉模型问题求助
  12. wps里的茶色字体怎么设置_VRay茶色玻璃材质参数是什么,要怎么设置?
  13. java8 treemap 排序_TreeSet 和TreeMap 排序
  14. php 接口签署域名,使用PHP集成万网域名查询API接口
  15. STING 与 cGAS的结合导致TBK1 激酶募集和活化
  16. 利用js制作的简单网页小游戏
  17. serverlet总结
  18. 自行封装移动端touch事件
  19. 车载电子电器做E-mark认证的费用是多少?
  20. 学编程看书好还是看视频好?

热门文章

  1. (网页)AngularJS 参考手册
  2. 上传图片截图预览控件不显示cropper.js 跨域问题
  3. 使用 Web Tracing Framework 分析富 JS 应用的性能
  4. FormatJS – 让你的 Web 应用程序国际化
  5. Bootstrap-table 部分浏览器显示不出来
  6. [EffectiveC++]item34:区分接口继承和实现继承
  7. 上传图片或文件 方法一
  8. js判断是否在iframe中
  9. 【第七次JAVA课,java语法基础】课件总结
  10. [Algorithm] 字符串匹配算法——KMP算法