java---关于多态性
2021-02-11 01:16
标签:16px 多态 close java 必须 turn === nss question 运行结果: 那代码主要是: https://zhidao.baidu.com/question/1957878191123445420.html java提高篇(四)-----理解java的三大特性之多态:https://www.cnblogs.com/chenssy/p/3372798.html 面向对象编程有三大特性:封装、继承、多态 ----2020-04-20 java---关于多态性 标签:16px 多态 close java 必须 turn === nss question 原文地址:https://www.cnblogs.com/jiuzhen/p/12740418.html 1 package Test;
2 //1:继承时,子类会隐藏父类相同的方法,要调用父类方法就必须使用super关键字,在子类中可以直接使用父类方法
3 //2:向上转型时,只保留子类中和父类同名的方法,和父类中其他非同名的方法
4
5 class A {
6 public String show(D obj) {
7 return "A and D";
8 }
9
10 public String show(A obj) {
11 return "A and A";
12 }
13 }
14
15 class B extends A {
16 public String show(B obj) {
17 return "B and B";
18 }
19
20 public String show(A obj) {
21 return "B and A";
22 }
23 }
24
25 class C extends B {
26 }
27
28 class D extends B {
29 }
30
31 public class Test2 {
32 public static void main(String[] args) {
33 A a1 = new A();
34 A a2 = new B();//B类型向上转型丢失与A类不同方法
35 B b = new B();
36 C c = new C();
37 D d = new D();
38 // B b1=new C();
39 System.out.println(a1.show(b)); // ①//B类的父类是A,所以A and A
40 System.out.println(a1.show(c)); // ②//C类父类的父类是A,D和他是同级。所以A and A
41 System.out.println(a1.show(d)); // ③//D类方法有,所以不会向上转型,所以A and D
42 System.out.println(a2.show(b)); // ④
43 /*注意这时候a2的两个方法其实是
44 public String show(D obj) {
45 return ("A and D");
46 }
47 public String show(A obj) {
48 return ("B and A");
49 } B的父类是A,所以B and A
50 */
51 System.out.println(a2.show(c)); // ⑤//C的父类的父类是A,所以B and A;
52 System.out.println(a2.show(d)); // ⑥//D有对应方法,所以A and D
53 System.out.println(b.show(b)); // ⑦
54 /*这个就是继承了,继承除了隐藏父类中和子类同名的方法外,在子类中可以直接使用父类的方法。所以B and B
55 所以就变成了
56 public String show(D obj) {
57 return ("A and D");
58 }
59 public String show(B obj) {
60 return ("B and B");
61 }
62 public String show(A obj) {
63 return ("B and A");
64 */
65 System.out.println(b.show(c)); // ⑧//C 的父类是B,所以B and B
66 System.out.println(b.show(d)); // ⑨//D有相应方法,所以A and D
67
68 // System.out.println("==========以下为加强认识,同理于A a2 = new B();//B类型向上转型丢失与A类不同方法");
69 //
70 // System.out.println(c.show(b));
71 // System.out.println(c.show(c));
72 // System.out.println(c.show(d));
73 //
74 // System.out.println(b1.show(b));
75 // System.out.println(b1.show(c));
76 // System.out.println(b1.show(d));
77 }
78 }
1:继承时,子类会隐藏父类相同的方法,要调用父类方法就必须使用super关键字,在子类中可以直接使用父类方法
2:向上转型时,只保留子类中和父类同名的方法,和父类中其他非同名的方法
以上代码来自百度,所知,具体参考链接:
学习参考链接:
java的继承:https://www.runoob.com/java/java-inheritance.html