子类能不能继承父类里protected的内部类 如果可以,如何得到该内部类的对象如题,在java编程思想第十章练习6里遇到的问题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 protected的范围是本类,本包,继承类,只要在这个范围类都可以继承。 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(); }} Son son = new Son();Parent.Inner aa = son.new Inner();aa.方法();不在一个包里也没问题的,,,在子类里导入父类就可以的。 用protected访问修饰的类,可以被当前包中的类和其他包中的子类所访问 emmmm也是碰到这题带着疑问来了,然而这个问题下面那几位答题的兄弟是不是没有去看过题目,第十章的练习6,:在第一个包中创建一个至少有一个方法的接口,在第二个包中创建一个类,其中还有一个protected的内部类实现上个接口。第三个包中继承这个类,并在一个方法中返回protected内部类的对象,返回的时候向上转型为接口。我在尝试的时候似乎不管是静态还是非静态的子类都无法访问父类的protected内部类。Intellij一直报错,编译也一直没通过,自动纠错,就只有提示修改内部类的权限修饰符。不知道楼主有没有解决,有解决的话可以讨论一下 public class CCC extends BBB{ public AAA CCC() { BBB.In i = new BBB.In(); return (AAA)i; }} 本类 同包 子类 全局public 是 是 是 是protected 是 是 是 default 是 是private 是 子类当然可以继承 protected的父类 将你第二个包中的实现的内部类 中创建公共的构造方法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(); }} 老哥,按照你的方法真的可以。可以解释一下吗,为什么需要加一个public的构造函数? 如果不加,他不是应该有一个默认的public 构造函数吗? 关于图片是否保存至数据库的问题 Java正则表达式教程 Java题-基础 大哥们 请来看看我这里什么毛病啊 急!!!!!! 初学者的问题 如何正确使用这个包? 用reflect写一个通用的比较器,如何实现? 菜鸟问题:写好的 applet 怎么运行!?! 何为守护进程? java的客户端除了APP还有什么? 有一个问题请问怎么解决:Could not initialize class org.apache.http.conn.ssl.SSLConnectionSoc mysql中视图数据的修改会影响原表数据吗
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();
}
}
Parent.Inner aa = son.new Inner();
aa.方法();
不在一个包里也没问题的,,,在子类里导入父类就可以的。
我在尝试的时候似乎不管是静态还是非静态的子类都无法访问父类的protected内部类。Intellij一直报错,编译也一直没通过,自动纠错,就只有提示修改内部类的权限修饰符。不知道楼主有没有解决,有解决的话可以讨论一下
public AAA CCC() {
BBB.In i = new BBB.In();
return (AAA)i;
}
}
public 是 是 是 是
protected 是 是 是
default 是 是
private 是
子类当然可以继承 protected的父类
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();
}
}
可以解释一下吗,为什么需要加一个public的构造函数? 如果不加,他不是应该有一个默认的public 构造函数吗?