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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汐枫wait 中级黑马   /  2015-12-19 23:30  /  859 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

谁能讲讲匿名内部类?

7 个回复

倒序浏览
内部类我了解也不多,老师说的是安卓以后用的相对来说会很多,
内部类简单的来说就是一个类中包含了另一个类
那么内部类特点是,内部类可以直接使用外部类的成员属性,而外部类想要调用内部类的方法就需要创建内部类的对象
我记得我刚写过的一道题
public class Test8 {
        public static void main(String[] args) {
                B b = new A().new B();
                b.func();
               
               
        }
}
class A {
        int x = 1;
        class B {
                int x = 2;
                void func(){
                        int x = 3;
                        System.out.println("我是A中的X:"+A.this.x+"\t\t"+"我是B中的X:"+this.x+"\t\t"+"我是func方法中的X:"+x);
                }
        }
}
这个能够简单的说明内部类和外部类的成员属性如何调用的,
当然我理解的很粗糙,有什么新发现求指教

评分

参与人数 1技术分 +1 收起 理由
洋葱头头 + 1

查看全部评分

回复 使用道具 举报
214652440 发表于 2015-12-19 23:38
内部类我了解也不多,老师说的是安卓以后用的相对来说会很多,
内部类简单的来说就是一个类中包含了另一个类
...

写的很好,谢谢了
回复 使用道具 举报
匿名内部类是创建某个类型子类对象的快捷方式。
将定义子类与创建子类对象两个步骤由一个格式一次完成,多使用匿名对象的方式。
匿名内部类有两个步骤:
临时定义一个类型的子类
定义后即刻创建刚刚定义的这个类的对象
虽然是两个步骤,但是两个步骤是连在一起的、即时的。
格式:
        new 父类(){
                //重写需要重写的方法
};
       
        例如:
                已经存在的父类:
public abstract class Person{
                        public abstract void eat();
}
定义并创建该父类的子类对象,并用多态的方式赋值给父类引用变量
Person  p = new Person(){
                        public void eat() {
                                System.out.println(“我吃了”);
}
};
回复 使用道具 举报
river1205 发表于 2015-12-20 18:41
匿名内部类是创建某个类型子类对象的快捷方式。
将定义子类与创建子类对象两个步骤由一个格式一次完成,多 ...

你这个例子举的不好,
1、你这个 父类(抽象类)定义成接口更合适,匿名内部类实现这个接口。
2、利用多态的方法,这种表述听起来怪怪的,多态是一种特征,不是一种方法。
回复 使用道具 举报
river1205 来自手机 中级黑马 2015-12-21 21:13:48
地板
li_joy99 发表于 2015-12-21 09:58
你这个例子举的不好,
1、你这个 父类(抽象类)定义成接口更合适,匿名内部类实现这个接口。
2、利用多 ...

我是举个例子,而且我说的是多态的方式
回复 使用道具 举报
类中有个类,就是内部类
回复 使用道具 举报
里面有两个概念,一个是匿名,一个是内部类
匿名的意思,用完就扔掉,在内存中驻留时间短
内部类,就是一个类在另一个类内部,其实本质上是一个对象.

一句话,在一个对象内部使用了一个没有名字的临时对象.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马