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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵庆礼 中级黑马   /  2012-6-24 23:57  /  1910 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由  赵庆礼 于 2012-6-25 10:40 编辑

内部类可以继承吗?怎么实现,最好有实例代码,谢谢

4 个回复

倒序浏览
当然可以继承了,你继承它的外部类,内部类不就继承过来了么?
回复 使用道具 举报
本帖最后由 周兴中 于 2012-6-25 00:48 编辑

每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。如果没有内部类提供的可以继承多个具体的或抽象的类的能力,一些设计与编程问题就很难解决。从这个角度看,内部类使得多重继承的解决方案变得完整。接口解决了部分问题,而内部类有效地实现了“多重继承”。

内部类可以继承内部类,也可以继承外部类。

public class Outer {
        class Inner {
                void doSomething() {
                        System.out.println("Inner doing ...");
                }
        }

        class Inner2 extends Inner {
                void doSomething() {
                        System.out.println("Inner2 doing ...");
                }

                void readme() {
                        System.out.println("HeHe!");
                }
        }
}

class Test {
        public static void main(String[] args) {
                Outer outer = new Outer();
                Outer.Inner in = outer.new Inner();
                Outer.Inner2 in2 = outer.new Inner2();
                in.doSomething();
                in2.doSomething();
                in2.readme();
        }
}

运行结果:
Inner doing ...
Inner2 doing ...
HeHe!

还有一种继承式的匿名内部类和接口式的匿名内部类.

评分

参与人数 1技术分 +2 收起 理由
职业规划-刘倩老师 + 2 赞一个!

查看全部评分

回复 使用道具 举报
class Egg2 {
        protected class Yolk { //
                public Yolk()// 内部类的构造函数
                {
                        System.out.println(this.getClass().getName());
                        System.out.println("you lai dao l zheli ");
                        System.out.println("Egg2.Yolk()");
                }

                public void f()// 内部类的成员方法
                {
                        System.out.println("Egg2.Yolk.f()");
                }
        }

        private Yolk y = new Yolk();// 实例化内部类

        public Egg2()// 外部类的构造方法
        {
                System.out.println("haishi xian lai de zheli ");
                System.out.println("New Egg2()");
        }

        public void insertYolk(Yolk yy)// 外部类的成员方法
        {
                System.out.println("xian  lai  zhe ");
                y = yy;
        }

        public void g() // 外部类的成员方法
        {
                y.f();// 调用内部的成员方法
        }
}

public class T extends Egg2.Yolk {
       
        T(Egg2 egg2) {
                egg2.super();
               
        }

        public static void main(String[] args) {
                Egg2 egg2 = new Egg2();
                //会先实例化成员变量类
                T t = new T(egg2);// 向上转型:即父类引用指向子类的实例(可以访问子类继承或覆盖的属性,不能访问子类独有的属性
               
        }
}
可以被继承,具体细节你可以google一下
回复 使用道具 举报
为什么不看毕老师的视频呢??
内部类第4个视频有讲这个问题{:soso_e129:}

评分

参与人数 1黑马币 +10 收起 理由
黄奕豪 + 10 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马