星空网 > 软件开发 > Java

java中多态成员的访问特点

多态成员变量的特点:

 1 class DuotaiTest2 2 { 3   public static void main(String[] args)  4   { 5     A a = new A(); 6     A b1 = new B(); 7     B b2 = new B(); 8     System.out.println(a.name); 9     System.out.println(a.a);10     System.out.println(b1.name);11     System.out.println(b1.a);//子类向上转型成父类,再调用子类特有成员变量,编译报错12     System.out.println(((B)b1).name);13     System.out.println(((B)b1).b);14     System.out.println(b2.name);15     System.out.println(b2.b);16   }17 }18 19 class A20 {21   String name = "A";//父子类同名变量22   int a = 1;//父类特有变量23 }24 25 class B extends A26 {27   String name = "B";28   int b = 2;//子类特有变量29 }30 31 /*32 总结:33   调用成员变量时, 类变量.成员变量 语句在执行时依据类变量类型进行选择入口34 */

运行结果:

  java中多态成员的访问特点

图解:

  java中多态成员的访问特点

  java中,子类的实例对象在堆内存中的存放应如图所示,既有子类的成员变量,又有父类的成员变量;

  同一对象可以有多态,当父类变量指向时,从A入口进入,可以访问父类的所有成员变量;当子类变量指向时,从B入口进入,可以访问子类的所有成员变量和父类非同名变量;

总结:  调用成员变量时, 类变量.成员变量 语句在执行时依据类变量类型进行选择入口


多态(非静态)成员函数的特点:
  我写了一个“重写”过程的思想本质,那个可以解释多态(非静态)成员函数的特点原理。
图解:

  java中多态成员的访问特点

  java中,实例对象即使被向上转型成父类,其实其在内存中的存储形式依旧是子类实例对象(转型...有讲),基于这个结论就好解释了

    多态是将子类实例对象向上转型后赋给父类变量,其在内存中依旧是子类实例对象,在通过该变量调用方法时,JVM会通过判断该变量指向的实例对象在内存的形式来确定进入方法区的那块去寻找方法

    因为转型后类型不变,所以JVM还是进入Child的方法区寻找方法,而Child自己定义了show()方法,所以调用了子类的show()

总结:
  (非静态)成员函数的访问原则是通过判断调用对象在内存中的形式而进行的,是子类实例则运行子类方法,是父类示例则运行父类方法,与变量类型无关

多态静态方法的特点:
  
 1 /* 2   需求:设计一个简单的java程序,确定多态中静态方法的访问特点 3   思路:设计一对子父类,创建子类实例,子类变量和父类变量同时指向该实例,通过不同变量调用查看结果 4 */ 5 class DuotaiTest3 6 { 7   public static void main(String[] args)  8   { 9     Child c = new Child();10     Father f = c;11     c.show();12     f.show();13   }14 }15 16 class Father17 {18   static void show(){19     System.out.println("Father show run.");20   }21 }22 23 class Child extends Father24 {25   static void show(){26     System.out.println("Child show run.");27   }28 }29 30 /*31 总结:32   同一个实例对象,不同类型的变量指向,通过不同变量调用会得到不同的结果表明:33   静态方法调用的判断是依据调用者的变量类型而进行的。34   类变量.方法 语句中,类变量类型决定着JVM在静态方法区的入口选择35 */

总结:  同一个实例对象,不同类型的变量指向,通过不同变量调用会得到不同的结果表明:  静态方法调用的判断是依据调用者的变量类型而进行的。  类变量.方法 语句中,类变量类型决定着JVM在静态方法区的入口选择



原标题:java中多态成员的访问特点

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

独立站新手教程:无货源独立站怎么做?:https://www.ikjzd.com/articles/1670963908116246529
亚马逊这个功能是新的流量入口还是点击率杀手?:https://www.ikjzd.com/articles/1670972598231179266
菜鸟国际快递持续优化物流时效,英德两国跨境物流大提速:https://www.ikjzd.com/articles/1670990906763014146
探秘海外社媒营销与国内社媒营销的不同:驾驭全球市场的秘密:https://www.ikjzd.com/articles/1670998663783718914
新加坡市场扩张指南:品牌布局策略与挑战解析:https://www.ikjzd.com/articles/1671029491775512577
连连国际——嗨Pay狂欢季—永久千三费率计划:https://www.ikjzd.com/articles/1671038578689601538
抖音电商副总裁将赴TikTok电商任职:https://www.goluckyvip.com/news/187213.html
中国跨境电商持续爆发,韩国本土企业慌了:https://www.kjdsnews.com/a/1836491.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流