public interface Interface1 {
void method1();
}
public class Class1 {
protected class Class1Inner implements Interface1{
public void method1() {
System.out.println("Class1Inner");
}
}
}
public class Class2 extends Class1{
public Interface1 getFatherInner() {
return super.new Class1Inner(); //报错,请问如何在不修改父类的前提下改正?
}
}
java 如何在子类方法中实例化父类的内部类?
答案:3 悬赏:0 手机版
解决时间 2021-04-24 06:15
- 提问者网友:我一贱你就笑
- 2021-04-23 09:36
最佳答案
- 五星知识达人网友:十鸦
- 2021-04-23 11:11
public interface Interface1 {
void method1();
}
public class Class1 {
protected class Class1Inner implements Interface1 {
public void method1() {
System.out.println("Class1Inner");
}
}
}
public class Class2 extends Class1 {
public Interface1 getFatherInner() {
// 因为Class1Inner是protected的,因此Class2中已经继承到Class1Inner了
return new Class1Inner();
}
}
void method1();
}
public class Class1 {
protected class Class1Inner implements Interface1 {
public void method1() {
System.out.println("Class1Inner");
}
}
}
public class Class2 extends Class1 {
public Interface1 getFatherInner() {
// 因为Class1Inner是protected的,因此Class2中已经继承到Class1Inner了
return new Class1Inner();
}
}
全部回答
- 1楼网友:琴狂剑也妄
- 2021-04-23 12:02
你这个父类中的内部类不是静态的。必须用父类实例来创建:
new Class1().new Class1Inner();
如果是static修饰的静态内部类,则可以用Class1.new Class1Inner();
- 2楼网友:轻熟杀无赦
- 2021-04-23 11:44
对于有继承关系的类,子类可以通过这个关键字调用父类中的方法。
比如:super.query();
此句话的意思是调用父类中的非私有方法query。
一般的用super关键字,调用类中的父类中重载构造方法。
比如:父类有个构造方法public a(){},同时又写了一个重载的构造方法public a(string name);那么,在子类中可以使用super(name)指明调用父类的哪个构造方法进行实例化父类对象。
大概就是这样的!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯