本帖最后由 ReadCode 于 2015-4-30 16:32 编辑
- class day06{
- public static void main(String[] args)
- {
- A a1 = new A();
- A a2 = new B();
- B b = new B();
- C c = new C();
- D d = new D();
-
- System.out.println(a1.show(b)); //1
- //a1为父类中的对象,所以在调用的时候,指调用父类中的内容,b为B类中的对象,B继承了A那么,在a1调用show(),实际上就是调用他们共性的内容,因为父类是由事物的共性内容不断抽取出来的,其实父类也是可以接受子类对象
- System.out.println(a1.show(c)); //2
- //同上,a1为父类对象,c为C类对象,而C继承了B,B继承了A,所以就成了一个继承体系,那么C也就有A中的方法,在a1调用show(),实际上就是调用他们共性的内容,因为父类是由事物的共性内容不断抽取出来的
- System.out.println(a1.show(d)); //3
- //同上,a1为父类对象,d为D类对象,而D继承了B,B继承了A,所以就成了一个继承体系,那么D也就有A中的方法,D obj也就是指把D的对象传进来(有疑惑)
- System.out.println(a2.show(b)); //4
- //a2也就是父类引用子类的对象,那么他在调用的时候实际上就是在调用子类重写父类中的那一部分,
- System.out.println(a2.show(c)); //5
- //a2也就是父类引用子类的对象,那么他在调用的时候实际上就是在调用子类重写父类中的那一部分,C继承了B也就是C.B之间有一个共性的方法
- System.out.println(a2.show(d)); //6
- //a2也就是父类引用子类的对象,那么a2只能使用父类中的内容,不可以使用子类中的功能,d继承了B也就是继承了A,所以会调用A中的show(D obj)(有疑惑)
- System.out.println(b.show(b)); //7
- //b是B中的对象,所以调用的是B中的方法
- System.out.println(b.show(c)); //8
- //b是B中的对象,C继承B那么就是他就会嗲用调用show(B obj)
- System.out.println(b.show(d)); //9
- //b是B中的对象,B继承了A,D继承了B,那么也就是D继承了A,所以最后就是show(D obj) System.out.println(a2.show(a1));
- System.out.println(b.show(a2));
- System.out.println(b.show(a1));
- System.out.println(b.show(a1));
-
- }
- //Java还支持多层继承。A-->B--->C 原来可以形成继承体系.其实D.C。B.A就是多层继承,本类对象只使用本类方法,父类对象引用子类对象,那么还是使用的是父类方法
- //其实第8和第3个就是多态的体现
- }
- class A{
- public String show(D obj){
- return ("A and D");
- }
- public String show(A obj){
- return ("A and A");
- }
- }
- class B extends A{
- public String show(B obj){
- return ("B and B");
- }
- public String show(A obj){
- return ("B and A");
- }
- }
- class C extends B{}
- class D extends B{}
- /*A and A 1
- A and A 2
- A and D 3
- B and A 4
- B and A 5
- A and D 6
- B and B 7
- B and B 8
- A and D 9
- B and A
- B and A
- B and A
- */
- /*
复制代码 这是一个困扰我好久的问题,由于是自学,没有人解答,只能是靠平时查询相关内容以及百度一些类似的例子作为参考,结合下自己的理解,写出的一些思路,题目中的 1,2,3,4.。。。。表示的就是对应的输出语句后面的注释标号~如果有什么疑问可以提出来共同学习的~~
|
|