zoukankan      html  css  js  c++  java
  • 匿名内部类

    /*
    
    匿名内部类:没有类名的类就称作为匿名内部类。
    
    匿名内部类的好处:简化书写。
    
    匿名内部类的使用前提:必须存在继承或者实现关系才能使用。
    
    
    匿名内部类一般是用于实参。
    
    
    */
    
    abstract class Animal{
        
        public abstract Animal run();
    
        public abstract void sleep();
    }
    
    
    class Outer{
    
        public void print(){
            //需求: 在方法内部定义一个类继承Animal类,然后调用run方法与sleep()。
            
            /*
            //局部内部类
            class Dog extends Animal{
                
                public void run(){
                    System.out.println("狗在跑..");
                }
    
                public void sleep(){
                    System.out.println("狗趴在睁开眼睛睡..");
                }
            }
            
            //创建对象
            Dog d = new Dog();
            d.run();    
            d.sleep();
            */    
            //匿名内部类 :匿名内部类只是没有类名,其他的一概成员都是具备的。
            // 匿名内部类与Animal是继承 的关系。  目前是创建Animal子类的对象. 
        Animal    a = new Animal(){  //多态
            
                //匿名内部的成员 
                public Animal run(){
                    System.out.println("狗在跑..");
                    return this;
                }
                
                public void sleep(){
                    System.out.println("狗趴在睁开眼睛睡..");
                }
    
                //特有的方法
                public void bite(){
                    System.out.println("狗在咬人..");
                }
        
            };
        
            a.bite();
            a.run();
            a.sleep();
            
        }
    }
    
    
    
    class Demo6 
    {
        public static void main(String[] args) 
        {
            //System.out.println("Hello World!");
            
            Outer outer = new Outer();
            outer.print();
        
        }
    }
    //实现关系下匿名内部类
    interface Dao{
    
        public void add();
    }
    
    
    class Outer{
    
        public void print(){
            //创建一个匿名内部类的对象
            new Dao(){   //不是接口不能创建对象吗?怎么现在又可以了?
                 
                 public void add(){
                    System.out.println("添加成功");
                 }
            }.add();
        }
    }
    
    
    
    class Demo7 
    {
        public static void main(String[] args) 
        {
            test(new Dao(){
                
                public void add(){
                    System.out.println("添加员工成功");
                }
            });
    
    
        }
    
        //调用这个方法...
        public static void  test(Dao d){  //形参类型是一个接口引用..
            d.add();
        }
    }
  • 相关阅读:
    loadrunner测试结果分析
    规范的测试流程
    B/S架构与C/S架构的区别
    Jemter性能测试
    Android Monkey压力测试介绍
    APP测试总结
    APP测试要点
    数据库常用的操作命令
    Mysql删除表格之后,进行恢复
    Android反编译工具
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6294752.html
Copyright © 2011-2022 走看看