A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class NonameInner  {        //匿名内部类
        public static void main(String[] args) {
                Outer o=new Outer();   //创建父类对象Outer
                        o.method();      //调用父类方法Outer中的method方法
        }
}

interface Inter {    //匿名内部类接口
        public void show1();  
        public void show2();
}
class Outer {  //创建外部类
        public void method(){    //创建外部类方法
/*     //匿名内部类只针对重写一个方法使用

                        new Inter(){     //实现接口
                        public void show1(){
                                System.out.println("show1");
                        }
                        public void show2(){
                                System.out.println("show1");
                        }
                        }.show1();
                new Inter(){     //实现接口
                        public void show1(){
                                System.out.println("show2");
                        }
                        public void show2(){
                                System.out.println("show2");
                        }
                        }.show2();
*/
                Inter i=new Inter(){     // 创建父类引用指向子类对象    接口Inter为父类  new Inter子类对象
                        public void show1(){
                                System.out.println("show1");
                        }
                        public void show2(){
                                System.out.println("show2");
                        }
                        /*public void show3(){    //创建子类特有的方法show3
                                System.out.println("show3")
                        }
                        */
                };
                i.show1();   //编译看接口中show1方法   运行看子类对象中的show1方法
                i.show2();      //编译看接口口show2中的方法,运行看子类对象中的show2方法
                //i.show3();   //调用子类特有的方法show3会出错,因为show3子类的特有的方法父类不能进行调用使用=匿名内部类不能向下转型
        }
}

//蒙了就对了要多看几遍

9 个回复

倒序浏览
顶一下吧  难为lz了
回复 使用道具 举报
這個範例用了兩個方式,1.是直接複寫調用,2.複寫後賦給i再調用

可以分成兩個部份來理解,先把簡化實現的方式拿出來理解,接著再把以下程序丟到類中方法內,這樣理解比較不會這麼亂
        public static void main(String[] args) {
                 new Inter(){     //实现接口
                        public void show1(){
                                System.out.println("show1");
                        }
                        public void show2(){
                                System.out.println("show1");
                        }
                        }.show1();
        }
}
interface Inter {    //匿名内部类接口
        public void show1();  
        public void show2();
}
回复 使用道具 举报
eddy1820 发表于 2015-12-11 16:41
這個範例用了兩個方式,1.是直接複寫調用,2.複寫後賦給i再調用

可以分成兩個部份來理解,先把簡化實現的 ...

恩恩,是的呢!我应该单独的陈列出来,这样比较清晰!
回复 使用道具 举报
//直接调用
class Demo {
        public static void main(String[] args){
                Outer o=new Outer();
                o.method();
        }
}
interface Inter {
        public void show1();
        public void show2();
}
class Outer {
        public void method(){
                new Inter(){
                        public void show1(){
                                System.out.println("show1");
                        }
                        public void show2(){
                                System.out.println("sho1");
                        }
                    }.show1();
                new Inter(){
                public void show1(){
                        System.out.println("show2");
                }
                public void show2(){
                        System.out.println("show2");
                }
                }.show2();
               
        }
}
回复 使用道具 举报
鬼魅_vYpyK 发表于 2015-12-11 17:04
//直接调用
class Demo {
        public static void main(String[] args){

//父类调用子类对象实现
class Demo {
        public static void main(String[] args){
                Outer o=new Outer();
                o.method();
        }
}

interface Inter {   //匿名对象接口
        public void show1();
        public void show2();
}
class Outer {    //外部类
        public void method(){    //外部类方法
                Inter i=new Inter(){    //父类对象引用子类对象
                        public void show1(){
                                System.out.println("show1");
                        }
                        public void show2(){
                                System.out.println("show2");
                        }
                };
                i.show1();    //编译看借口中show1方法,运行看子类中的show1方法
                i.show2();
        }
}
回复 使用道具 举报
学习了  还没学接口
回复 使用道具 举报
LSD-ZWH 中级黑马 2015-12-12 22:38:42
8#
感觉看了这个我都快疯了
回复 使用道具 举报
蒙圈了    好乱
回复 使用道具 举报
顶下吧,虽然还是不太明白
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马