关于java中继承和多态的关系?

2024-12-18 02:33:48
推荐回答(4个)
回答1:

继承,子类继承父类中所以的属性和方法,但是对于private的属相和方法,由于这个是父类的隐私,所以子类虽然是继承了,但是没有可以访问这些属性和方法的引用,所以相当于没有继承到。很多时候,可以理解为,没有继承。
多态:就是父类引用可以持有子类对象。这时候只能调用父类中的方法,而子类中特有方法是无法访问的,因为这个时候(编译时)你把他看作父类对象的原因,但是到了运行的时候,编译器就会发现这个父类引用中原来是一个子类的对像,所以如果父类和子类中有相同的方法时,调用的会是子类中的方法,而不是父类的。
在Java中也可以这么说:编译时看父类,运行时看子类。

回答2:

针对Java语言的初学者,详细介绍初学者对于Java的JDK、JRE、JVM之间的关系,帮助初学者能够理清楚它们各自的作用和应用范围。

回答3:

假如:一个修车工修车,我们创建修车工的实例,这个时候就可以修车了,由于不可能让他修一种牌子的车,所以我们传参的时候传父类,但是每种车可能构建不同,一样的毛病,一样的修,但就是不同的,是吧?这个时候在程序中执行的时候而不是编译的时候执行方法,java动态绑定,也就是把你拉进来的车的修车实现,给我们修车工,这样修车工人就知道用传进来的车对象的方法进行修车了,但前提是必须都是extends(拓展)了,车类。
额...时间有限,如果觉得回答不够准确,当我路过。
-------另建议你多看下书,哪怕你实在牛得不行的时候,多看看,没坏处

回答4:

第一个问题是纯概念性的,baidu下继承,多态,只是个概念,不理解作用也不大
第二个Aa,Ab,Ac继承A
那么就有A a=new Aa(),A a=new Ab(),A a=new Ac()就是所说的父类引用指向子类对象,因为程序里有时候需要根据实际运行情况、参数决定去指向哪一个具体的子类(程序员并不能知道运行时使用者具体的选择),由子类里重写的方法去执行处理过程。比如A类是父类,有函数print(),Aa里重写print(),输出了Aa,Ab里重写print(),输出了Ab,Ac里重写print(),输出了Ac,这里可能要了解下mvc模式,前面这样的A,Aa,Ab,Ac可能就是m层,然后编写c层代码是会根据v层传回的参数决定A a=new A*,也就是父类引用a具体指向哪个子类的对象,然后调用a的print()去执行处理,将结果传回给v层去显示。可能你有疑问是干吗要用继承,我直接根据传回的参数是哪个,就实例化哪个子类就执行哪个子类的方法就行了,不需要用父类引用指向子类对象这样的方法。但是实际情况是,在c层里对象是传递的,可能实例化是在这个类里,调用就跑到另一个类里面去了,实例化的类知道a是Aa,还是Ab,还是Ac,但是调用的类呢,这时候调用的类就不需要关心是哪个了,因为知道a是A的引用,有个print()是需要调用的就行了。这个可能解释的有点乱,等你了解mvc时结合一下就可以发现区别了