内部类和外部类的一个问题

问题描述

class Car{class Wheel{}}class PlaneWheel extends Car.Wheel{PlaneWheel(Car car){car.super();//这里怎么理解??}public static void main(String[] args){Car car=new Car();PlaneWheel pw=new PlaneWheel(car);}}

解决方案

也许下面代码更有说服力:引用class Car {public Car() {super();}void run() {}class Wheel {Wheel(){System.out.println("能否运行这里?");}void round() {}}}public class PlaneWheel extends Car.Wheel {PlaneWheel(Car car) {car.super();// 这里怎么理解??}public static void main(String[] args) {Car car = new Car();PlaneWheel pw = new PlaneWheel(car);}}
解决方案二:
我在eclipse下测试了一下,结果是Wheel类的构造方法。我的测试代码如下:引用class Car {public Car() {super();}void run() {}class Wheel {void round() {}}}public class PlaneWheel extends Car.Wheel {PlaneWheel(Car car) {car.super();// 这里怎么理解??}public static void main(String[] args) {Car car = new Car();PlaneWheel pw = new PlaneWheel(car);}}你只要把光标放到super()方法上eclipse就会告诉你了。
解决方案三:
首先要搞清楚,继承的问题,显然,继承的是Car.Wheel,那么父类就是Wheel,这个跟是不是内部类无任何关系,至于下面的car.super();//这里怎么理解?? 这个调用,那更是跟那个扯不上半毛钱关系,传入一个Car类对象,调用它的父类构造方法,他采用的默认的,那么调用的不是就是object的吗, 这个没什么疑问的。
解决方案四:
car.super()不是调用的Object的构造方法么?这与内部类外部类有什么关系,因为这段代码里的类全都是default类型的。
解决方案五:
我倒觉得是:引用car.super();//这里怎么理解??我觉得是调用的是Wheel的构造方法。
解决方案六:
1.先弄明白没个类如果没有定义构造函数,会有一个默认的无参构造函数2.再搞清楚super是指当然类的父类
解决方案七:
引用car.super();//这里怎么理解?? 调用Car的父类的构造函数

时间: 2024-09-20 21:43:53

内部类和外部类的一个问题的相关文章

java 内部类-在外部类中为什么可以直接访问内部类的私有成员?

问题描述 在外部类中为什么可以直接访问内部类的私有成员? 在外部类中为什么可以直接访问内部类的私有成员?比如,root=root.next,这条语句出现在外部类的方法中,这里,root是定义在外部类中的一个内部类对象,而next是root对象的一个私有属性,为什么可以这样写? 解决方案 内部类是一个特例,相当于友元类(java本身没有友元这个概念) 从语法的角度来说,这样做是方便的.封装性主要是避免调用者随意操作对象的私有成员,调用他们不知道的代码引起问题.但是你定义了外部类,显然内部类也是你定

java内部类 引用外部类对象this问题

问题描述 java内部类 引用外部类对象this问题 在内部类里,想引用外部类的对象,为什么是外部类.this而不是外部类加引用变量,还有.操作应该是成员操作符吧,这样this不就成了外部类成员了 解决方案 你好,实际上我们代指当前类对象的this是个简写形式,完整的形式就是 类名字.this,举个例子来说吧 class OuterClass { private String outAttribute = "我是外部类属性"; public void printOutAttribute

python中的嵌套类(内部类调用外部类中的方法函数)

在为书中版本是3.X的,但2.X不太支持直接调用. 所以,在PYTHON2.X中,要在内部类中调用外部类的方法,就必须得实例化外部类,然后,传入实例进行调用. 花了我两个小时啊,资料没找到,自己一个一个想法调试,真的失败了三四十次,PRINT了N多~~~:) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 4

java 内部类-为什么外部类能访问内部类的私有成员?

问题描述 为什么外部类能访问内部类的私有成员? 在学习单例时发现,外部类可以访问内部类的私有成员 如下面代码所示: //Initialization on Demand Holder class Singleton { private Singleton() { } private static class HolderClass { private final static Singleton instance = new Singleton(); } public static Single

引用外部类对象

若想生成外部类对象的句柄,就要用一个点号以及一个this来命名外部类.举个例子来说,在Sequence.SSelector类中,它的所有方法都能产生外部类Sequence的存储句柄,方法是采用Sequence.this的形式.结果获得的句柄会自动具备正确的类型(这会在编译期间检查并核实,所以不会出现运行期的开销). 有些时候,我们想告诉其他某些对象创建它某个内部类的一个对象.为达到这个目的,必须在new表达式中提供指向其他外部类对象的一个句柄,就象下面这样:   //: Parcel11.jav

java-Java静态内部类怎么调用外部类的泛型

问题描述 Java静态内部类怎么调用外部类的泛型 Java静态内部类怎么调用外部类的泛型,2个泛型可以名字一样,但是没有任何关系啊....... 解决方案 http://zhidao.baidu.com/link?url=GkDla2jig8PJLNVmNocRJCFgYmDCJx-xmnCdIpjk16jhFGwsWusJIkevnmN-UpOxyJopRo0kj3o-lWrsBKQVbCrdUPnqfUNyqep_Az8pARm 解决方案二: Java 内部类与静态类外部类 调用内部类Jav

内部类引用局部变量与外部类成员变量的问题思考

昨天有一个比较爱思考的同事和我提起一个问题:为什么匿名内部类使用的局部变量和参数需要final修饰,而外部类的成员变量则不用?对这个问题我一直作为默认的语法了,木有仔细想过为什么(在分析完后有点印象在哪本书上看到过,但是就是没有找到,难道是我的幻觉?呵呵).虽然没有想过,但是还是借着之前研究过字节码的基础上,分析了一些,感觉上是找到了一些答案,分享一下:也希望有大牛给指出一些不足的地方. 假如我们有以下的代码: interface Printer {      public void print

java-怎样创建一个同名外部类的对象?

问题描述 怎样创建一个同名外部类的对象? class A { class B{}//甲 } class B{}//乙 因为重名,在A中只能创建甲的对象, 请问怎样在A中创建乙的对象? 解决方案 恭喜你,你已成功把我搞晕了.现在已经不知道你想问什么了 解决方案二: 怎么在外部类的静态方法中创建成员内部类的对象? 解决方案三: class A{ public void showA(){ System.out.println("A类"); } class B{ public void sho

自定义view-自定义View,用外部类定义OnKeyListener监听器,但是在AVD打不开,内部类的方式可以

问题描述 自定义View,用外部类定义OnKeyListener监听器,但是在AVD打不开,内部类的方式可以 public class MainActivity extends Activity { private int speed = 10; PlaneView planeView = new PlaneView(null); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(saved