• 《java入门第一季》之面向对象(匿名内部类)


    1、认识匿名内部类
    
    /*
    	匿名内部类
    		就是内部类的简化写法。
    
    	前提:存在一个类或者接口
    		这里的类可以是具体类也可以是抽象类。
    	
    	匿名内部类的格式:
    		new 类名或者接口名(){
    			重写方法;
    		};这代表的是一个子类对象
    		
    	本质是什么呢?
    		是一个继承了该类或者实现了该接口的子类匿名对象。
    */
    interface Inter {
    	public abstract void show();
    	public abstract void show2();
    }
    
    class Outer {
    	public void method() {
    		//接口里面只有一个方法的时候,只有show()
    		/*
    		new Inter() {
    			public void show() {//在匿名内部类里面重写接口或者抽象类的方法。
    				System.out.println("show");
    			}
    		}.show();
    		*/
    		
    		//二个方法的时候
    		/*
    		new Inter() {
    			public void show() {
    				System.out.println("show");
    			}
    			
    			public void show2() {
    				System.out.println("show2");
    			}
    		}.show();
    		
    		new Inter() {
    			public void show() {
    			        System.out.println("show");
    			}
    			
    			public void show2() {
    				System.out.println("show2");
    			}
    		}.show2();
    		*/
    		
    		//如果很多个方法,就很麻烦了.所以选择使用参数接收这个对象,然后使用对象调用方法就可以了。
    		Inter i = new Inter() { //接口的实现子类的对象给接口,多态
    			public void show() {
    				System.out.println("show");
    			}
    			
    			public void show2() {
    				System.out.println("show2");
    			}
    		};//注意这里的分号
    		
    		i.show();
    		i.show2();
    	}
    }
    
    class InnerClassDemo6 {
    	public static void main(String[] args) {
    		Outer o = new Outer();
    		o.method();
    	}
    }
    
    2、匿名内部类在开发中的使用
    
    通过一个案例简单演示:
    
    interface Person {
        public abstract void study();
    }
    
    class PersonDemo {
        public void method(Person p) {//这种方式,在前面介绍参数类型是引用类型的时候已经介绍过了。
           //见博客(http://blog.csdn.net/qq_32059827/article/details/51344046)
            p.study();
        }
    }
    
    //实现类
    class Student implements Person {
        public void study() {
            System.out.println("好好学习,天天向上");
        }
    }
    
    class InnerClassTest2 {
        public static void main(String[] args) {
            //测试
            PersonDemo pd = new PersonDemo();
            Person p = new Student();
            pd.method(p);
            System.out.println("--------------------");
            
            //匿名内部类在开发中的使用
           //结果和上面一模一样,使用匿名内部类的方式,可以节省内存空间。使用场景,方法比较少的时候使用。
            pd.method(new Person(){
                public void study() {
                    System.out.println("好好学习,天天向上");
                }
            });
        }
    }
    
  • 相关阅读:
    操作系统读书笔记01
    k-mean鸢尾花分类
    利用numpy完成波士顿房价预测任务
    软件过程管理读书笔记01
    软件测试读书笔记01
    数据分析与数据挖掘
    oracle 导出导入操作
    oracle降低高水位操作
    dubbo工程刚初始化报错明明找得到jar包还是报错
    get请求参数中带有url
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299842.html
Copyright © 2020-2023  润新知