网站开发东莞wordpress 制作小程序

张小明 2026/3/2 16:30:04
网站开发东莞,wordpress 制作小程序,网站上的搜索功能是怎么做的,企信网企业信用信息系统多态和Object类 多态 1. 概念 继承、接口就是多态的具体体现方式 2. 编译时多态 方法重载在编译时就已经确定如何调用#xff0c;因此方法重载属于编译时多态。类似于方法重载示例#xff1a; public class Calculator {public double calculator(double a, double b) {retur…多态和Object类多态1. 概念继承、接口就是多态的具体体现方式2. 编译时多态方法重载在编译时就已经确定如何调用因此方法重载属于编译时多态。类似于方法重载示例publicclassCalculator{publicdoublecalculator(doublea,doubleb){returnab;}publicintcalculator(inta,intb){returnab;}publicfloatcalculator(floata,floatb){returnab;}}publicclassTest{publicstaticvoidmain(String[]args){CalculatorcnewCalculator();intresult1c.calculator(1,2);doubleresult2c.calculator(1.0,2.0);}}3. 运行时多态运行时多态Java虚拟机为每个变量中引用的对象调用适当的方法。它不会调用由变量类型定义的方法。这种行为成为虚拟方法的调用。示例publicclassfather{publicvoidshow(){System.out.println(father show);}}publicclasschildextendsfather{Overridepublicvoidshow(){System.out.println(child show);}}publicclassTest{publicstaticvoidmain(String[]args){//变量f的类型是father-----它不会调用由变量类型定义的方法。father fnewchild();//f 调用show方法时 不会调用father定义的方法f.show();}}案例王者中英雄都有名字都会攻击分为物理攻击和法术攻击publicabstractclassHero{Stringname;publicHero(Stringname){this.namename;}//抽象类publicabstractvoidattack();}publicclassPhysicalHeroextendsHero{publicPhysicalHero(Stringname){super(name);}Overridepublicvoidattack(){System.out.println(物理攻击);}}publicclassSpellHeroextendsHero{Overridepublicvoidattack(){System.out.println(法术攻击);}publicSpellHero(Stringname){super(name);}}publicclassHeroTest{publicstaticvoidmain(String[]args){Herohero1newPhysicalHero(李白);hero1.attack();Herohero2newSpellHero(小乔);hero2.attack();}}输出结果 物理攻击 法术攻击应用场景动物园中有老虎熊猫猴子等动物每种动物吃的东西不一样老虎吃肉熊猫吃竹叶猴子吃水果动物管理员会给它们喂食物分析老虎熊猫猴子都是动物它们的动作都是吃动物管理员喂食publicclassAnimals{Stringname;publicvoideat(){System.out.println(chi);}}publicclassMonkeyextendsAnimals{publicMonkey(){super();}Overridepublicvoideat(){System.out.println(猴子吃水果);}}publicclassPandaextendsAnimals{publicPanda(){super();}Overridepublicvoideat(){System.out.println(熊猫吃竹叶);}}publicclassTigerextendsAnimals{publicTiger(){super();}Overridepublicvoideat(){System.out.println(老虎吃肉);}}publicclassZookeeper{publicvoidfeetTiger(Tigertiger){tiger.eat();}publicvoidfeetPanda(Pandapanda){panda.eat();}publicvoidfeetMonkey(Monkeymonkey){monkey.eat();}}publicclassZooTest{publicstaticvoidmain(String[]args){ZookeeperzknewZookeeper();zk.feetMonkey(newMonkey());zk.feetPanda(newPanda());zk.feetTiger(newTiger());}}现在每一种动物对应一种喂食方法当拥有大量动物动物管理员就需要添加大量方法这种设计方法存在缺陷可以通过多态来进行改进publicclassZookeeper{// public void feetTiger(Tiger tiger) {// tiger.eat();// }//// public void feetPanda(Panda panda) {// panda.eat();// }//// public void feetMonkey(Monkey monkey) {// monkey.eat();// }publicvoidfeetAnimals(Animalsanimals){animals.eat();}}publicclassZooTest{publicstaticvoidmain(String[]args){ZookeeperzknewZookeeper();//利用多态zk.feetAnimals(newMonkey());zk.feetAnimals(newPanda());zk.feetAnimals(newTiger());}}细节在调用方法时采取的是编译看左边运行看右边原则在编译时编译器先检查引用类型Animals有没有这个方法来决定是否调用如果编译时检测出Animals没有这个方法会直接报错在运行时JVM执行时调用实际对象类型new monkey)的方法注意成员变量没有多态静态方法没有多态私有方法没有多态示例publicclassAnimals{Stringname;publicvoideat(){System.out.println(chi);}}publicclassLionextendsAnimals{Overridepublicvoideat(){System.out.println(狮子在吃饭);}//子类特有的方法publicvoidstrolling(){System.out.println(狮子在漫步);}}publicclassZooTest{publicstaticvoidmain(String[]args){AnimalsanewLion();/* 调用方法时编译看左边运行看右边 因为Animals有eat方法所有a调用eat方法可以通过 但Animals没有strolling方法所以strolling无法通过编译 */a.eat();//a.strolling();}}那么如果一定想要调用strolling方法怎么办可以通过强制类型转换实现publicclassZooTest{publicstaticvoidmain(String[]args){AnimalsanewLion();/* 调用方法时编译看左边运行看右边 因为Animals有eat方法所有a调用eat方法可以通过 但Animals没有strolling方法所以strolling无法通过编译 */a.eat();//a.strolling();//如果想要实现strolling方法强制类型转换((Lion)a).strolling();}}需求如果现在要在吃的同时让狮子漫步则代码实现如publicclassZookeeper{publicvoidkeep(Animalsanimals){animals.eat();//强制类型转载((Lion)animals).strolling();}}publicclassZooTest{publicstaticvoidmain(String[]args){ZookeeperzknewZookeeper();Animalsa1newLion();Animalsa2newTiger();zk.keep(a1);zk.keep(a2);}}发现这段代码报错了为什么呢原因是将Tiger赋值给了a2而strolling是狮子的特有方法只能将Animals强转无法将Tiger强制类型转换成Lion对于这个现象我们可以通过instanceof运算符来进行优化4.instanceof运算符instanceof本身意思表示的是什么什么的一个实例。主要应用在类型的强制转换上在使用强制类型转换时如果使用不正确在运行时会报错。而instanceof运算符对转换的目标进行检测如果是则进行强制转换。这样可以保证程序的正常运行。语法对象名instanceof类名//表示检测对象是否是指定类型的一个实例返回值类型为boolean类型通过instanceof运算符对之前代码的优化:publicclassZookeeper{publicvoidkeep(Animalsanimals){animals.eat();// ((Lion)animals).strolling();//如果animals对象是一个Tiger类的实例对象if(animalsinstanceofLion){((Lion)animals).strolling();}elseif(animalsinstanceofTiger){System.out.println(老虎不能漫步);}}}publicclassZooTest{publicstaticvoidmain(String[]args){ZookeeperzknewZookeeper();Animalsa1newLion();Animalsa2newTiger();zk.keep(a1);zk.keep(a2);}}输出 狮子在吃饭 狮子在漫步 老虎吃肉 老虎不能漫步练习某商城有电视机、电风扇、空调等电器设备展示。现有质检人员对这些电器设备一一检测如果是电视机就播放视频检测如果是电风扇就启动风扇如果是空调就进行制冷操作分析电器电视机电风扇空调质检人员调用方法时通过不同的对象使用对应的方法publicclassElectricalAppliances{}publicclassAirConditionerextendsElectricalAppliances{publicvoidturnAir(){System.out.println(开启空调);}}publicclassFanextendsElectricalAppliances{publicvoidturnFan(){System.out.println(开启风扇);}}publicclassTVextendsElectricalAppliances{publicvoidplayVideo(){System.out.println(电视播放视频);}}publicclassPerson{publicvoidcheck(ElectricalAppliancesea){if(eainstanceofAirConditioner){((AirConditioner)ea).turnAir();}elseif(eainstanceofFan){((Fan)ea).turnFan();}elseif(eainstanceofTV){((TV)ea).playVideo();}}}publicclassTest{publicstaticvoidmain(String[]args){PersonpnewPerson();p.check(newAirConditioner());p.check(newFan());p.check(newTV());}}输出 开启空调 开启风扇 电视播放视频Object类常用方法Object类中定义的方法大多数是属于native方法native表示的是本地方法实现是在C中1.getClass()getClass()是Java中Object类的一个核心方法用于获取对象的运行时类信息示例classTV{}publicclassObjectTest{publicstaticvoidmain(String[]args){TVtvnewTV();//获取TV的信息Classclazztv.getClass();//获取类名Stringnameclazz.getSimpleName();System.out.println(name);//获取类的全限定名(包名 类名)StringclassNameclazz.getName();System.out.println(className);//获取父类的定义信息ClasssuperClassclazz.getSuperclass();//获取父类的名称StringsuperNameclazz.getSuperclass().getSimpleName();StringsuperName2superClass.getSimpleName();System.out.println(superName);System.out.println(superName2);//获取父类的全限定名StringsuperClassNameclazz.getSuperclass().getName();StringsuperClassName2superClass.getName();System.out.println(superClassName);System.out.println(superClassName2);//String类Stringsadmin;//获取String类的信息ClassStringClasss.getClass();//获取String类的接口因为接口有多个所以需要数组Class[]interfaceClassesStringClass.getInterfaces();//打印for(inti0;iinterfaceClasses.length;i){//获取接口信息ClassinterfaceClassinterfaceClasses[i];//获取接口名字StringinterfaceNameinterfaceClass.getSimpleName();System.out.println(interfaceName);//获取接口全限定名StringinterfaceClassNameinterfaceClass.getName();System.out.println(interfaceClassName);}}}2.hashCode()返回值是对象的哈希码即对象的内存地址十六进制如果两个对象相等则他们的哈希码也必须相等。如果重写equals方法则会更改两个对象的相等方式并且object的hashCode实现不在有效。因此如果重写equals方法则必须重写hashCode方法。Object类中的hashCode方法返回的就是对象的内存地址。一旦重写了hashCode方法那么Object类中的hashCode方法就失效了此时hashCode方法返回值不在是内存地址。根据定义如果两个对象相等则他们的哈希码也必须相等反之则不然。两个对象使用equals方法比较如果返回true则它们的哈希码一定相同。重写了equals方法就必须要重写hashCode方法示例publicclassStudent{privateStringname;privateintage;publicStudent(Stringname,intage){this.namename;this.ageage;}//hashCode()方法被重写了之后返回的值就不是内存地址了OverridepublicinthashCode(){return1;}}publicclassStudentTest{publicstaticvoidmain(String[]args){Students1newStudent(zhangsan,1);Students2newStudent(zhangsan,1);}}因为是new所以s1和s2存储的地址并不一样可一旦重写了hashCode方法得到的值就一样了3.equals(object obj)equals()方法比较两个对象是否相等如果相等返回true。object类中提供的equals方法使用身份运算符来确定两个对象是否相等。对于原始数据类型这将给出正确的结果但是对于对象则不是地址值并不相同如果要测试两个对象在等效性上是否相等包含的信息相等必须重写equals方法两个对象的地址不同内容相同equals返回falsepublicclassStudentTest{publicstaticvoidmain(String[]args){Students1newStudent(zhangsan,1);Students2newStudent(zhangsan,1);System.out.println(s1.equals(s2));}}输出结果false为了让输出结果为true即比较的是对象的内容而并不是地址值就要重写equals方法publicclassStudent{privateStringname;privateintage;publicStudent(Stringname,intage){this.namename;this.ageage;}Overridepublicbooleanequals(Objectobj){//地址相等返回trueif(thisobj)returntrue;//比较类的定义类型不相等返回falseif(this.getClass()!obj.getClass())returnfalse;//类的定义一致那么对象obj就可以被强制转换为StudentStudentother(Student)obj;returnthis.name.equals(other.name)this.ageother.age;}}publicclassStudentTest{publicstaticvoidmain(String[]args){Students1newStudent(zhangsan,1);Students2newStudent(zhangsan,1);System.out.println(s1.equals(s2));}}输出结果true但是此时此刻两个对象的哈希码并不相同根据定义如果两个对象相等它们的哈希码必须相等因此我们需要重写hashCode方法OverridepublicinthashCode(){//调用String类的hashCodereturnname.hashCode()age;}重写equals方法步骤1.比较内存地址2.检测是否同一类型3.检测属性是否相同如果两个对象相等那他们的哈希码就一定相等 如果重写了equals方法那么就一定要重写hashCode方法 因为不重写hashCode方法就会调用Object类中的hashCode方法 这样得到的是内存地址值而不同对象的内存地址是不同的 equals方法重写后得到的不是地址而是内部信息 这样就会造成不同对象相等但却拥有不同的哈希码 所以重写了equals方法就必须要重写hashCode方法面试题请描述和equals方法的区别基本数据类型使用比较的就是两个数据的字面量引用数据类型比较的是内粗地址。equals方法来自Object类本身使用实现的就是此时没有区别。但是Object类中的equals方法可能被重写此时比较就需要重写逻辑来进行。4.toString()应该始终考虑在类中重写toString方法重写了Object的toString方法返回该对象的String表达方式这对调试非常有用。Object类中的toString()方法最后输出的就是所属类的全限定名 哈希码我们可以通过重写toString() 方法使其输出该类的内容示例不重写toStringpublicclassStudentTest{publicstaticvoidmain(String[]args){Students1newStudent(zhangsan,1);Students2newStudent(zhangsan,1);System.out.println(s1.toString());System.out.println(s2.toString());}}/* 输出 hashCode.Student4eec7777 hashCode.Student3b07d329 */重写toString() 方法使其返回该类的内容publicclassStudent{privateStringname;privateintage;publicStudent(Stringname,intage){this.namename;this.ageage;}OverridepublicStringtoString(){returnname/tage;}}publicclassStudentTest{publicstaticvoidmain(String[]args){Students1newStudent(zhangsan,1);Students2newStudent(zhangsan,1);//会自动调用s的toString方法System.out.println(s1);System.out.println(s1.toString());System.out.println(s2);System.out.println(s2.toString());}}其输出结果为zhangsan/t1zhangsan/t1zhangsan/t1zhangsan/t15.finalize()Object类提供了一个回调方法finalize( ) 当该对象变为垃圾时可以在该对象上调用方法。Object类的finalize( )实现不执行任何操作你可以覆盖finalize( )进行清理例如释放资源示例publicclassStudent{privateStringname;privateintage;//当一个Student对象变为垃圾时可能会被调用Overrideprotectedvoidfinalize()throwsThrowable{//变为垃圾this.namenull;System.out.println(所有资源已经释放可以进行清理);}publicStudent(Stringname,intage){this.namename;this.ageage;}}publicclassStudentTest{publicstaticvoidmain(String[]args){show();System.out.println(这是最后一行代码了);}publicstaticvoidshow(){//s对象的作用范围只是在show方法中一旦方法执行完毕//那么s对象就应该消亡释放内存StudentsnewStudent(lisi,24);System.out.println(s);}}输出hashCode.Student4eec7777这是最后一行代码了为什么没有执行finalize程序运行太快s还没有被回收程序就运行结束了验证publicclassStudentTest{publicstaticvoidmain(String[]args){show();//调用系统的垃圾回收器进行垃圾回收//gc就是garbage collectorSystem.gc();System.out.println(这是最后一行代码了);}publicstaticvoidshow(){//s对象的作用范围只是在show方法中一旦方法执行完毕//那么s对象就应该消亡释放内存StudentsnewStudent(lisi,24);System.out.println(s);}}输出hashCode.Student4eec7777这是最后一行代码了所有资源已经释放可以进行清理注意只有堆上的内存才可能产生垃圾当栈上没有引用时就会变成垃圾垃圾回收器并不是时时回收垃圾可能还会存在一段时间ic void main(String[] args) {show();System.out.println(“这是最后一行代码了”);}public static void show() { //s对象的作用范围只是在show方法中一旦方法执行完毕 //那么s对象就应该消亡释放内存 Student s new Student(lisi, 24); System.out.println(s); }} 输出 hashCode.Student4eec7777 这是最后一行代码了 为什么没有执行finalize 程序运行太快s还没有被回收程序就运行结束了 验证 java public class StudentTest { public static void main(String[] args) { show(); //调用系统的垃圾回收器进行垃圾回收 //gc就是garbage collector System.gc(); System.out.println(这是最后一行代码了); } public static void show() { //s对象的作用范围只是在show方法中一旦方法执行完毕 //那么s对象就应该消亡释放内存 Student s new Student(lisi, 24); System.out.println(s); } }输出hashCode.Student4eec7777这是最后一行代码了所有资源已经释放可以进行清理注意只有堆上的内存才可能产生垃圾当栈上没有引用时就会变成垃圾垃圾回收器并不是时时回收垃圾可能还会存在一段时间
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

皖icp阜阳网站建设二建报名入口官网

Anything-LLM能否替代传统搜索引擎?对比分析来了 在信息爆炸的时代,我们每天都在与搜索框打交道。但你有没有想过:为什么输入“报销标准”后,搜索引擎会返回成百上千个链接,而不是直接告诉你答案?更关键的是…

张小明 2026/1/10 15:12:52 网站建设

许昌 网站开发引擎搜索器

进程处理与并行化:原理、应用与优化 在计算机编程领域,进程处理是一个至关重要的主题,它涉及到如何有效地管理和控制程序的执行。本文将深入探讨进程处理中的几个关键概念,包括信号处理、协程、并行化、子shell以及进程替换等,同时提供相关的代码示例和操作步骤,帮助你更…

张小明 2026/1/12 9:47:37 网站建设

长春网站seo公司厦门建设网站的

第7章 多机并联与宽频振荡分析 7.3 构网变流器输出阻抗特性与振荡机理 在上一节建立的阻抗分析法框架基础上,本节将聚焦于构网型变流器本身,深入剖析其输出阻抗 Zo(s)Z_o(s)Zo​(s) 或输出导纳 Yo(s)Y_o(s)Yo​(s) 的频域特性形成机理、关键影响因素,并基于此阐明其与电网…

张小明 2026/1/12 6:23:02 网站建设

五莲县财源建设网站wp网站源码

TlbbGmTool快速上手终极指南:5步掌握天龙八部GM工具 【免费下载链接】TlbbGmTool 某网络游戏的单机版本GM工具 项目地址: https://gitcode.com/gh_mirrors/tl/TlbbGmTool TlbbGmTool是一款专为天龙八部单机版本设计的GM工具,能够帮助玩家快速管理…

张小明 2026/1/9 15:10:20 网站建设

网站后台用什么做服务器wordpress为什么需要域名

Langchain-Chatchat缓存机制详解:Redis在问答系统中的妙用 在企业智能问答系统的开发实践中,一个看似简单的问题往往隐藏着巨大的性能挑战——当上百名员工反复询问“年假怎么申请”或“报销流程是什么”时,是否每次都要重新走完文本清洗、向…

张小明 2026/1/10 0:02:32 网站建设

网站建设与管理适合女生学吗wordpress 三栏主题

第一章:浏览器兼容性测试怎么选?在现代Web开发中,确保应用在不同浏览器中表现一致是质量保障的关键环节。选择合适的浏览器兼容性测试策略,直接影响用户体验和项目交付效率。面对市场上众多浏览器及其版本组合,需从用户…

张小明 2026/1/12 5:15:46 网站建设