匿名内部类

匿名内部类:没有类名的类。
匿名内部类的好处:简化书写。

匿名内部类的使用前提:必须存在继承或者实现关系才能使用。

1.继承关系下的匿名内部类
  
  
  1. /**
  2. * Author:Liu Zhiyong
  3. * Version:Version_1
  4. * Date:2016年6月14日07:49:51
  5. * Desc:匿名内部类:没有类名的类。
  6. 匿名内部类的好处:简化书写。
  7. 匿名内部类的使用前提:必须存在继承或者实现关系才能使用。
  8. */
  9. abstract class Animal
  10. {
  11. public abstract void run();
  12. // public abstract Animal run();
  13. public abstract void sleep();
  14. }
  15. class Outer
  16. {
  17. public void print(){
  18. //需求:在方法内部定义一个类继承Animal类,然后调用run方法与sleep方法
  19. /*
  20. //1局部内部类的做法
  21. class Dog extends Animal
  22. {
  23. public void run(){
  24. System.out.println("狗在跑。。。。");
  25. }
  26. public void sleep(){
  27. System.out.println("狗在睡觉。。。。");
  28. }
  29. }
  30. //创建对象
  31. Dog dog = new Dog();
  32. dog.run();
  33. dog.sleep();
  34. */
  35. //2匿名内部类的做法:匿名内部类只是没有类名,其它的一概成员都是具备的
  36. //匿名内部类与Animal是继承的关系。 目前是创建Animal子类的对象
  37. Animal a = new Animal(){ //多态
  38. //匿名内部类的成员
  39. public void run(){
  40. System.out.println("狗在跑。。。。");
  41. }
  42. public void sleep(){
  43. System.out.println("狗在睡觉。。。。");
  44. }
  45. //特有的方法
  46. public void bite(){
  47. System.out.println("狗在咬。。。。");
  48. }
  49. };
  50. a.run();
  51. a.sleep();
  52. }
  53. }
  54. class Demo61
  55. {
  56. public static void main(String[] args)
  57. {
  58. Outer outer = new Outer();
  59. outer.print();
  60. }
  61. }
2.实现关系下的匿名内部类
匿名内部类一般用于实参。
  
  
  1. /**
  2. * Author:Liu Zhiyong
  3. * Version:Version_1
  4. * Date:2016年6月14日11:20:35
  5. * Desc:实现关系下的匿名内部类
  6. 匿名内部类一般用于实参。
  7. */
  8. interface Dao
  9. {
  10. public void add();
  11. public void delete();
  12. }
  13. class Outer
  14. {
  15. public void print(){
  16. //创建一个匿名内部类的对象
  17. Dao dao = new Dao(){ //接口不能创建对象。这里是创建了接口实现类的对象。
  18. public void add(){
  19. System.out.println("添加成功。。。。");
  20. }
  21. public void delete(){
  22. System.out.println("删除成功。。。。");
  23. }
  24. //特有的方法,若是存在特有的 方法,只能采用局部内部类的方法来调用,匿名内部类不行
  25. public void update(){
  26. System.out.println("修改成功。。。。");
  27. }
  28. };
  29. dao.add();
  30. dao.delete();
  31. }
  32. }
  33. class Demo62
  34. {
  35. public static void main(String[] args)
  36. {
  37. test(new Dao(){ //匿名内部类一般用于实参
  38. public void add(){
  39. System.out.println("添加成功。。。。");
  40. }
  41. public void delete(){
  42. System.out.println("删除成功。。。。");
  43. }
  44. });
  45. }
  46. //调用这个方法
  47. public static void test(Dao dao){
  48. dao.add();
  49. }
  50. }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值