如果可以,如何得到该内部类的对象
如题,在java编程思想第十章练习6里遇到的问题

解决方案 »

  1.   

    protected的范围是本类,本包,继承类,只要在这个范围类都可以继承。
      

  2.   

    class OutClass{

    protected static class InnerClass{
    public static void method(){
    System.out.println("----InnerClass method----");
    }
    }
    }public class Test extends OutClass{
    public static void main(String[] args) {
    Test.InnerClass.method();
    }
    }
      

  3.   

    Son son = new Son();
    Parent.Inner aa = son.new Inner();
    aa.方法();
    不在一个包里也没问题的,,,在子类里导入父类就可以的。
      

  4.   

    用protected访问修饰的类,可以被当前包中的类和其他包中的子类所访问
      

  5.   

    emmmm也是碰到这题带着疑问来了,然而这个问题下面那几位答题的兄弟是不是没有去看过题目,第十章的练习6,:在第一个包中创建一个至少有一个方法的接口,在第二个包中创建一个类,其中还有一个protected的内部类实现上个接口。第三个包中继承这个类,并在一个方法中返回protected内部类的对象,返回的时候向上转型为接口。
    我在尝试的时候似乎不管是静态还是非静态的子类都无法访问父类的protected内部类。Intellij一直报错,编译也一直没通过,自动纠错,就只有提示修改内部类的权限修饰符。不知道楼主有没有解决,有解决的话可以讨论一下
      

  6.   

    public class CCC extends BBB{
    public AAA CCC() {
    BBB.In i = new BBB.In();
    return (AAA)i;
    }
    }
      

  7.   

                      本类    同包     子类       全局
    public          是      是       是         是
    protected     是      是       是         
    default         是      是
    private        是     
    子类当然可以继承  protected的父类
      

  8.   

    将你第二个包中的实现的内部类 中创建公共的构造方法package com.sure.test6.p1;
    public interface Inter {
        void say(String some);
    }package com.sure.test6.p2;import com.sure.test6.p1.Inter;
    public class Outer {    protected class Impl implements Inter{
            public Impl(){}
            @Override
            public void say(String some) {
                System.out.println(some);
            }
        }
    }package com.sure.test6.p3;import com.sure.test6.p1.Inter;
    import com.sure.test6.p2.Outer;public class Extend extends Outer {    public Inter getImpl(){
            return this.new Impl();
        }
    }
      

  9.   

    老哥,按照你的方法真的可以。
    可以解释一下吗,为什么需要加一个public的构造函数? 如果不加,他不是应该有一个默认的public 构造函数吗?