- 下面是个人理解,可以参考下,说的不是很透彻,很多概念是需要自己积累学习。
- class A
- {
- void fun1()
- { //6,父类怎么访问子类?
- System.out.println(fun2());
- }
- int fun2()
- {
- return 123;
- }
-
- }
- public class B extends A //5.为什么不可以加public
- {
- int fun2()
- {
- return 456;
- }
-
- public static void main(String args[]) //1,主函数定义在这里什么意思?
- {
- B b = new B(); //创建一个类B.
- b.fun1(); //2,这里怎么会访问到父类的fun1方法?
- A a = b; //3,把子类给父类什么意思?
- a.fun2(); //4,这里怎么实现?
- }
- }
- /*
- 分析:
- (1)主函数定义在那里无所谓,只是告诉JVM一个程序的入口,一般可以叫做测试函数。
- (2)b是B的对象,B继承了A之后,B就拥有其父类B中的所有非私有方法。
- (3)父类B指向其子类A的引用,这就是多态机制
- (4)B类型的b类型向上提升为a是A类型的,当调用fun1()时,a他本身有该方法,所以可以使用。假如这里你调用fun2(),返回结果为123.
- (5)这里是可以加public,但一个包中,只能有一个public类型的类。因为public类的类名,必须和我们文件名相同,而文件名只有一个。
- (6)多态中,父类类型变量可以通过向下转型为其子类类型对象,调用子类中的方法。前提是:该父类类型变量的真实面目是要向下转型子类类型的。(或者:创建子类对象来访问,这样会产生一个新对象)。
- */
复制代码
|