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

西安做网站广告的公司网页版梦幻西游金色伙伴推荐

西安做网站广告的公司,网页版梦幻西游金色伙伴推荐,免费的关键词挖掘工具,帝国cms做网站流程从对象的内存角度来理解试试.假设现在有一个父类Father,它里面的变量需要占用1M内存.有一个它的子类Son,它里面的变量需要占用0.5M内存.现在通过代码来看看内存的分配情况:Father f new Father();//系统将分配1M内存.Son s new Son();//系统将分配1.5M内存!因为子类中有一个隐…从对象的内存角度来理解试试.假设现在有一个父类Father,它里面的变量需要占用1M内存.有一个它的子类Son,它里面的变量需要占用0.5M内存.现在通过代码来看看内存的分配情况:Father f new Father();//系统将分配1M内存.Son s new Son();//系统将分配1.5M内存!因为子类中有一个隐藏的引用super会指向父类实例,所以在实例化子类之前会先实例化一个父类,也就是说会先执行父类的构造函数.由于s中包含了父类的实例,所以s可以调用父类的方法.Son s1 s;//s1指向那1.5M的内存.Father f1 (Father)s;//这时f1会指向那1.5M内存中的1M内存,即是说,f1只是指向了s中实例的父类实例对象,所以f1只能调用父类的方法(存储在1M内存中),而不能调用子类的方法(存储在0.5M内存中).Son s2 (Son)f;//这句代码运行时会报ClassCastException.因为f中只有1M内存,而子类的引用都必须要有1.5M的内存,所以无法转换.Son s3 (Son)f1;//这句可以通过运行,这时s3指向那1.5M的内存.由于f1是由s转换过来的,所以它是有1.5M的内存的,只是它指向的只有1M内存.示例class Father{void print(){};}class Son extends Father{void print(){System.out.println(子类中);}void show(){System.out.println(show 中);}}class Demo{public static void main(String args[]){Father objnew Son();obj.print();obj.show();  //这个调用会报错}}1 .如果你想实现多态,那么必须有三个条件,父类引用,子类对象,方法覆盖你这里如果Fathor类有一个show()方法,那么形成方法覆盖,那么此时就可以这么写:obj.show(),此刻形成了多态.2. 没有方法覆盖,那你这里只能解释为父类引用去访问一个子类的方法,当然,父类引用没有这么大范围的权限,当然会报错PS:多态实际上是一种机制,在编译时刻,会生成一张虚拟表,来记录所有覆盖的方法,没有被覆盖的方法是不会记录到这张表的.若一个父类引用调用了没有覆盖的子类方法,那么是不符合该表的,那么编译时刻就会报错. 在执行程序的时候,虚拟机会去这张虚拟表中找覆盖的方法,比如引用中实际上存的是一个子类对象引用,那么就会去找子类中的相应的覆盖的方法来执行定义一个父类类型的引用指向一个子类的对象既可以使用子类强大的功能又可以抽取父类的共性。所以父类类型的引用可以调用父类中定义的所有属性和方法而对于子类中定义而父类中没有的方法它是无可奈何的同时父类中的一个方法只有在在父类中定义而在子类中没有重写的情况下才可以被父类类型的引用调用看下面这段程序class Father{public void func1(){func2();}//这是父类中的func2()方法因为下面的子类中重写了该方法//所以在父类类型的引用中调用时这个方法将不再有效//取而代之的是将调用子类中重写的func2()方法public void func2(){System.out.println(AAA);}}class Child extends Father{//func1(int i)是对func1()方法的一个重载//由于在父类中没有定义这个方法所以它不能被父类类型的引用调用//所以在下面的main方法中child.func1(68)是不对的public void func1(int i){System.out.println(BBB);}//func2()重写了父类Father中的func2()方法//如果父类类型的引用中调用了func2()方法那么必然是子类中重写的这个方法public void func2(){System.out.println(CCC);}}public class PolymorphismTest {public static void main(String[] args) {Father child new Child();child.func1();//打印结果将会是什么}}上面的程序是个很典型的多态的例子。子类Child继承了父类Father并重载了父类的func1()方法重写了父类的func2()方法。重载后的func1(int i)和func1()不再是同一个方法由于父类中没有func1(int i)那么父类类型的引用child就不能调用func1(int i)方法。而子类重写了func2()方法那么父类类型的引用child在调用该方法时将会调用子类中重写的func2()。那么该程序将会打印出什么样的结果呢很显然应该是“CCC”。变量是不存在重写覆盖的public class A { int a 1; }public class B extends A { int a 2 }测试类里调用了这个方法void compare(){if(super.a this.a)System.out.println(not overrided);elseSystem.out.println(overrided);}控制台出来的是overrided类中的属性是没有多态性的即你在引用上面使用属性时系统只会去找引用的静态类型中的那个属性而与它的实际类型无关。静态方法也是没有多态性的。引自百度文库
http://www.sadfv.cn/news/17067/

相关文章:

  • 全国十大网站建设公司网页游戏排行榜枪战
  • 学校要求做网站wordpress编辑新页面
  • 天河建设网站哪个好网站装修的代码怎么做的
  • 如何做一个内部网站装修推广网站哪个好
  • 网站快速注册企业网站建设计划
  • 陕西渭南住房和城乡建设厅网站用word 做网站
  • 顺德网站建设合理使用颜色搭配_方能达到最佳视觉效果网站建设中网站制作包括哪些内容
  • 网站开发软件费用php网站开发优化
  • 网站制作报价维持地建网络怎么编辑网站
  • 装修设计网站哪个最好网站建设后期维护方案
  • 为什么点不开网站2015年做啥网站致富
  • 主网站下建立子目录站加强服务保障满足群众急需m
  • 什么店是做网站制作的创意型网站建设
  • 设计师网站有哪些网站如何做问卷调查
  • 衡水网站建设找谁网站后台用什么开发
  • 泉企业网站建设wordpress图片数据库
  • 机机票网站建设wordpress 使用jquery
  • 白云区手机版网站建设网站服务器建设费用
  • 运动网站模板西安网站设计哪家好
  • 建设旅游网站电子商务公司招聘
  • 制作销售网站有哪些问题某些网站dns解析失败
  • 微网站模板建设的选择百度首页百度
  • 南京网站设计公司济南兴田德润简介图片山东监理工程师考试最新消息
  • 5g天天奭5g天天运动网站代码渝快办官网
  • 做网站优惠seo诊断专家
  • 网站建设方案功能描述网站建设东莞
  • 建设装修公司网站单页加盟网站模板
  • 天津手机网站公司wordpress如何备份 网站
  • 购物网站的功能wordpress生成分类目录
  • 书店网站模板凡科网站建设价格