java怎样从内部类继承

2025-03-03 21:19:50
推荐回答(5个)
回答1:

注意使用范围,如果是缺省内部类,只能在包内使用使用,如果是public或者是protected则可以在任何子类内使用内部类,如果是public static,则内部类上升为外部类。如果仅仅只是static则内部类上升为包内范围的外部类。
如果你people的内部类run,是以非缺省的形式存在那么你都可以在起子类student中使用,如果是缺省修饰,那意味着只能在包内的子类中使用。建议使用protected修饰。
public class People{
protected class Run{
}
}
如果是这样写,那只要是people类的子类都可以继承或者使用run这个内部类。推荐这样写,这样有良好的封装性。不要使用public除非是要让内部类上升到外部类,才有必要public static一起写,如果单纯的public表面上看是公有了,而实际功能上他和protected是一样的,无法真正的公有,只能在子类内使用,破坏了public关键字本来的封装性。

回答2:

  可以使用extends来继承内部类,但是要注意使用范围。
  如果是缺省内部类,只能在包内使用使用;如果是public或者是protected则可以在任何子类内使用内部类;如果是public static,则内部类上升为外部类;如果仅仅只是static则内部类上升为包内范围的外部类。

回答3:

Inner是WithInner的内部类,那么一般的用法,例
WithInner.Inner inner = new WithInner(). new Inner() ;
要创建Inner的对象必须先创建WithInner的对象之后才能创建Inner对象,现在要用一个类InheritInner继承Inner类,在继承过程中构造方法会被调用,即使不写也会调用默认构造方法,但问题出现了,在调用父类Inner构造方法时找不到WithInner的对象,所以就必须给InheritInner类的构造方法传入WithInner对象再通过wi.super();方法调用Inner的默认构造方法。

回答4:

楼主是不是为了用Run类中的方法或是属性
只要是继承了父类,而且父类的内部类不是用private修饰的话
就可以在子类中访问父类的内部类。
要是这个目的的话,不妨看下以下代码。

public class Test {
public static void main(String[] args) {
Student s = new Student();

}
}

class People {
public class Run {
public void run() {
System.out.println(1);
}
}
}

class Student extends People {
public Student() {
new Run().run();
}
}

回答5:

public class Sample {
public class ABC{
}
}
下面是子类
=======================
public class TTTT extends Sample {
public class DDDDDDD extends Sample.ABC{
}
}