当前位置: 首页 > news >正文

综合服务平台一站式服务平台网站开发央企网站群建设中标公告

综合服务平台一站式服务平台网站开发,央企网站群建设中标公告,网站蜘蛛爬行统计系统,东莞离莞最新规定java转型问题其实并不复杂#xff0c;只要记住一句话#xff1a;父类引用指向子类对象。 什么叫父类引用指向子类对象#xff0c;且听我慢慢道来. 从2个名词开始说起#xff1a;向上转型(upcasting)、向下转型(downcasting). 举个例子#xff1a;有2个类#xff0c;Fathe… java转型问题其实并不复杂只要记住一句话父类引用指向子类对象。 什么叫父类引用指向子类对象且听我慢慢道来. 从2个名词开始说起向上转型(upcasting)、向下转型(downcasting). 举个例子有2个类Father是父类Son类继承自Father。 Father f1 newSon();   // 这就叫upcasting 向上转型) // 现在f1引用指向一个Son对象 Son s1 (Son)f1;   // 这就叫downcasting (向下转型) // 现在f1还是指向Son对象 第2个例子 Father f2 newFather(); Son s2 (Son)f2;      //出错子类引用不能指向父类对象 你或许会问第1个例子中Son s1 (Son)f1;问什么是正确的呢。 很简单因为f1指向一个子类对象Father f1 newSon(); 子类s1引用当然可以指向子类对象了。 而f2 被传给了一个Father对象Father f2 newFather子类s1引用不能指向父类对象。 总结 1。父类引用指向子类对象而子类引用不能指向父类对象。 2。把子类对象直接赋给父类引用叫upcasting向上转型向上转型不用强制转换。      如Father f1 new Son(); 3。把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting)要强制转换。    如f1就是一个指向子类对象的父类引用。把f1赋给子类引用s1即 Son s1 (Son)f1           其中f1前面的(Son)必须加上进行强制转换。 一、向上转型。 通俗地讲即是将子类对象转为父类对象。此处父类对象可以是接口。 1向上转型中的方法调用。 看下面代码 [java] package com.wensefu.others;  public class Animal {            public void eat(){          System.out.println(animal eatting...);      }  }  class Bird extends Animal{            public void eat(){          System.out.println(bird eatting...);      }            public void fly(){                    System.out.println(bird flying...);      }  }  class Main{            public static void main(String[] args) {                    Animal bnew Bird(); //向上转型          b.eat();           //! error: b.fly(); b虽指向子类对象但此时丢失fly()方法          dosleep(new Male());          dosleep(new Female());      }            public static void dosleep(Human h) {          h.sleep();      }  }                            package com.wensefu.others;   public class Human {      public void sleep() {          System.out.println(Human sleep..);      }  }  class Male extends Human {      Override      public void sleep() {          System.out.println(Male sleep..);      }  }  class Female extends Human {      Override      public void sleep() {          System.out.println(Female sleep..);      }  }                            注意这里的向上转型        Animal bnewBird(); //向上转型       b.eat(); 此处将调用子类的eat()方法。原因b实际指向的是Bird子类故调用时会调用子类本身的方法。 需要注意的是向上转型时b会遗失除与父类对象共有的其他方法。如本例中的fly方法不再为b所有。 2向上转型的好处。 看上面的代码 public static void dosleep(Human h) {       h.sleep();     } 这里以父类为参数调有时用子类作为参数就是利用了向上转型。这样使代码变得简洁。不然的话 如果dosleep以子类对象为参数则有多少个子类就需要写多少个函数。这也体现了JAVA的抽象编程思想。 二、向下转型。 与向上转型相反即是把父类对象转为子类对象。 看下面代码 package com.wensefu.other1;   public class Girl {      public void smile(){          System.out.println(girl smile()...);      }  }  class MMGirl extends Girl{            Override      public void smile() {                    System.out.println(MMirl smile sounds sweet...);      }      public void c(){          System.out.println(MMirl c()...);      }  }  class Main{            public static void main(String[] args) {                    Girl g1new MMGirl(); //向上转型          g1.smile();                    MMGirl mmg(MMGirl)g1; //向下转型,编译和运行皆不会出错          mmg.smile();          mmg.c();                              Girl g2new Girl();  //      MMGirl mmg1(MMGirl)g2; //不安全的向下转型,编译无错但会运行会出错  //      mmg1.smile();  //      mmg1.c();            if(g2 instanceof MMGirl){              MMGirl mmg1(MMGirl)g2;               mmg1.smile();              mmg1.c();          }                }  }  Girl g1new MMGirl(); //向上转型       g1.smile();       MMGirl mmg(MMGirl)g1; //向下转型,编译和运行皆不会出错 这里的向下转型是安全的。因为g1指向的是子类对象。 而 Girl g2new Girl(); MMGirl mmg1(MMGirl)g2; //不安全的向下转型,编译无错但会运行会出错 运行出错 Exception in thread mainjava.lang.ClassCastException: com.wensefu.other1.Girl     atcom.wensefu.other1.Main.main(Girl.java:36) 如代码所示可以通过instanceof来防止出现异常。
http://www.yutouwan.com/news/467713/

相关文章:

  • 网站备案期间停止解析最专业的网站建设seo优化服务公司
  • 可以做甩货的电商网站公司网站 免费模板
  • 开封网站建设价格忻州 建网站
  • ppt要怎么做网站电工应用技术网站资源建设
  • 网站开发报价和开发周期东明网页设计
  • 网站分类表合肥软件开发公司
  • 关于网站建设项目收取费用做H5哪个网站字体漂亮一些
  • seo品牌优化整站优化建c2c网站
  • 上海做网站哪家好公司注册网站建设
  • 重庆网站建设公司pantone色卡官网入口
  • 电子商务网站建设课后作业服装 公司 网站建设
  • 网站被k恢复wordpress server error
  • 章丘区当地网站建设哪家好最新网站开发语言
  • 阜阳网站制作公司找哪家外贸企业网站开发
  • 合肥企业网站建设创建企业手机微信网站门户
  • 上海的网站开发公司it从零开始学大概要学多久
  • 手机网站生成appwordpress漏洞工具
  • 安福网站建设在哪里可以做公司网站
  • wordpress 网站赏析免费 建网站
  • 柴油网站怎么做登录后台wordpress需要配置什么
  • 中国建设银行网站密码是什么意思2345网址导航电脑版大全
  • 原创网站模版北京活动策划公司黄页
  • 网站规划设计是什么样的wordpress单页后台模板
  • 深圳哪个网站发布做网站义务网网站建设方案
  • 知识付费网站搭建WordPress主题显示问题
  • 如何建设简易网站东莞机械建站如何
  • 官方网站下载cad重庆网站的网络推广
  • 主机建网站的优势工地建筑劳务公司招工平台
  • asp制作网站建设网站应该注意些什么
  • 网站集约建设原因东莞做网站建设