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

西安网站建设云阔网络武汉 网络 推广

西安网站建设云阔网络,武汉 网络 推广,div css快速做网站,铂爵旅拍婚纱摄影官网文章目录 一、多态的概述二、多态中成员访问特点 ★三、多态的优势与劣势四、多态下的类型转换4.2 自动类型转换(从子到父)4.2 强制类型转换(从父到子)4.3 instanceof 关键字 一、多态的概述 多态:是指执行同一个行为…

文章目录

  • 一、多态的概述
  • 二、多态中成员访问特点
  • 三、多态的优势与劣势
  • 四、多态下的类型转换
    • 4.2 自动类型转换(从子到父)
    • 4.2 强制类型转换(从父到子)
    • 4.3 instanceof 关键字


一、多态的概述

多态:是指执行同一个行为,会表现出不同的特征。

常见格式:

在这里插入图片描述

多态的前提: 有继承 / 实现关系;有父类引用指向子类对象;有方法重写(多态侧重行为多态)


二、多态中成员访问特点

  • 方法调用:编译看左,运行看右

    如下面例子:编译的时候是观察 Animal 对象是否有 run 方法,而运行时调用子类的方法。

  • 变量调用:编译看左,运行也看左

    如下面例子:编译的时候是观察 Animal 对象是否有 name 变量,并且运行时调用的也是父类的变量。

    public abstract class Animal {public String name = "动物";public abstract void run();
    }
    public class Dog extends Animal{public String name = "狗狗";@Overridepublic void run() {System.out.println("狗在跑~~");}
    }
    public class Tortoise extends Animal {public String name = "乌龟";@Overridepublic void run() {System.out.println("乌龟在跑~~");}
    }
    
    public class Test {public static void main(String[] args) {Animal dog = new Dog();dog.run(); // 狗在跑~~System.out.println(dog.name); // 动物Animal tortoise = new Tortoise();tortoise.run(); // 乌龟在跑~~System.out.println(tortoise.name); // 动物}
    }
    

    注:多态注重行为多态。


三、多态的优势与劣势

在多态形式下,右边对象可以实现解耦合,便于扩展和维护。

Animal a = new Dog();
a.run(); // 后续业务行为随对象而变,后续代码无需修改

定义方法的时候,使用父类型作为参数,该方法就可以接收这父类的一切子类对象,体现出多态的扩展性与便利。

public class Test {public static void main(String[] args) {Animal dog = new Dog();Animal tortoise = new Tortoise();run(dog); // 狗在跑~~run(tortoise); // 乌龟在跑~~}public static void run(Animal animal){animal.run();}
}

多态下会产生一个问题:多态下不能使用子类的独有功能,因此可利用强制类型转换解决此问题。


四、多态下的类型转换

4.2 自动类型转换(从子到父)

子类对象赋值给父类类型的变量指向。

在这里插入图片描述


4.2 强制类型转换(从父到子)

父类类型的变量强制转换为子类对象,格式如下:

在这里插入图片描述

作用:可以解决多态下的劣势,可以实现调用子类独有的功能

注意:如果转型后的类型和对象真实类型不是同一种类型,那么在转换的时候就会出现类型转换异常 ClassCastException。

在这里插入图片描述


4.3 instanceof 关键字

Java 建议强转前使用 instanceof 判断当前对象的真实类型,再进行强制转换。

在这里插入图片描述

判断关键字左边的变量指向的对象的真实类型,是否是右边的类型或者是其子类类型,是则返回 true,反之返回 false。

例1:调用子类独有功能。

public class Animal {public String name = "动物";public void run(){System.out.println("动物可以跑~~");}
}
public class Dog extends Animal {public String name = "狗狗";@Overridepublic void run() {System.out.println("狗在跑~~");}/**独有功能*/public void lookDoor(){System.out.println("狗在看门!");}
}public class Tortoise extends Animal {public String name = "乌龟";@Overridepublic void run() {System.out.println("乌龟在跑~~");}/**独有功能*/public void layEggs(){System.out.println("乌龟在下蛋!");}
}
public class Test1 {public static void main(String[] args) {// 自动类型转换Animal a = new Dog();a.run();// a.lookDoor(); // 多态下无法调用子类独有功能// 强制类型转换:可以实现调用子类独有功能的// 规定:有继承或者实现关系的 2 个类型就可以强制类型转换,运行时可能出现问题。// Tortoise t = (Tortoise) a; // 报错。编译阶段可以强制执行不会出错,运行时可能会出错Dog d = (Dog) a; // 因为 a 可能不是 Dog,可能是 Tortoise,因此需要强转d.lookDoor();// 建议强制转换前,先判断变量指向对象的真实类型,再强制类型转换。if(a instanceof Tortoise){Tortoise t = (Tortoise) a;t.layEggs(); // 调用子类独有的功能}else if(a instanceof Dog){Dog d1 = (Dog) a;d1.lookDoor();}}
}

例2:多态作为参数的实例。

public class Test2 {public static void main(String[] args) {Animal a1 = new Dog();go(a1);}public static void go(Animal a){System.out.println("预备~~~");a.run();// 独有功能if(a instanceof Tortoise){Tortoise t = (Tortoise) a;t.layEggs();}else if(a instanceof Dog){Dog d1 = (Dog) a;d1.lookDoor();}System.out.println("结束~~~~");}
}

文章参考:Java入门基础视频教程,java零基础自学就选黑马程序员Java入门教程(含Java项目和Java真题)


文章转载自:
http://copperskin.rtkz.cn
http://sklodowskite.rtkz.cn
http://familygram.rtkz.cn
http://fibrillate.rtkz.cn
http://fixure.rtkz.cn
http://prepuberty.rtkz.cn
http://asthenopia.rtkz.cn
http://eluant.rtkz.cn
http://blepharoplast.rtkz.cn
http://shmatte.rtkz.cn
http://hitchhiker.rtkz.cn
http://disburse.rtkz.cn
http://spindleshanks.rtkz.cn
http://seemly.rtkz.cn
http://doughboy.rtkz.cn
http://unaccessible.rtkz.cn
http://vaunty.rtkz.cn
http://polyol.rtkz.cn
http://apian.rtkz.cn
http://skerry.rtkz.cn
http://gushy.rtkz.cn
http://respective.rtkz.cn
http://haemagogue.rtkz.cn
http://unconcernedly.rtkz.cn
http://keypunch.rtkz.cn
http://decathlete.rtkz.cn
http://fulmination.rtkz.cn
http://downtick.rtkz.cn
http://nonlethal.rtkz.cn
http://iceberg.rtkz.cn
http://finnicky.rtkz.cn
http://bareboat.rtkz.cn
http://triploblastic.rtkz.cn
http://crier.rtkz.cn
http://odiousness.rtkz.cn
http://increately.rtkz.cn
http://unlighted.rtkz.cn
http://antistat.rtkz.cn
http://semicivilized.rtkz.cn
http://euchromosome.rtkz.cn
http://rancherie.rtkz.cn
http://nuppence.rtkz.cn
http://ayahuasca.rtkz.cn
http://doronicum.rtkz.cn
http://credulously.rtkz.cn
http://caba.rtkz.cn
http://redwing.rtkz.cn
http://ethlyn.rtkz.cn
http://eyebrow.rtkz.cn
http://matman.rtkz.cn
http://supraconscious.rtkz.cn
http://winner.rtkz.cn
http://reconfirm.rtkz.cn
http://youthen.rtkz.cn
http://apparatus.rtkz.cn
http://surrejoinder.rtkz.cn
http://solstitial.rtkz.cn
http://uninvoked.rtkz.cn
http://osmiridium.rtkz.cn
http://vivisection.rtkz.cn
http://soilborne.rtkz.cn
http://hardwood.rtkz.cn
http://immunocytochemistry.rtkz.cn
http://crappy.rtkz.cn
http://tampere.rtkz.cn
http://prothallium.rtkz.cn
http://disobey.rtkz.cn
http://transact.rtkz.cn
http://cuetrack.rtkz.cn
http://galvanise.rtkz.cn
http://ziti.rtkz.cn
http://slanderously.rtkz.cn
http://cleat.rtkz.cn
http://birdbrain.rtkz.cn
http://curvature.rtkz.cn
http://lysippus.rtkz.cn
http://reperforator.rtkz.cn
http://kaoline.rtkz.cn
http://unpen.rtkz.cn
http://kure.rtkz.cn
http://beatlemania.rtkz.cn
http://euphonic.rtkz.cn
http://matabele.rtkz.cn
http://microseismology.rtkz.cn
http://risk.rtkz.cn
http://unbendable.rtkz.cn
http://pallium.rtkz.cn
http://ugly.rtkz.cn
http://lychnis.rtkz.cn
http://humus.rtkz.cn
http://hyperalgesic.rtkz.cn
http://multibus.rtkz.cn
http://gigantean.rtkz.cn
http://fondly.rtkz.cn
http://loathly.rtkz.cn
http://ingloriously.rtkz.cn
http://contribution.rtkz.cn
http://promin.rtkz.cn
http://sclerema.rtkz.cn
http://houseful.rtkz.cn
http://www.dt0577.cn/news/71265.html

相关文章:

  • 计算机网络技术电商网站建设与运营seo文章优化技巧
  • 公司网站开发需求文档免费域名注册查询
  • 做问卷调查的是哪个网站好苏州seo推广
  • 个性网站模板优化网络的软件下载
  • 吴江住房建设局网站东莞搜索网络优化
  • app ui设计欣赏 网站电商运营模式
  • 网站怎么做优化互联网营销师报考条件
  • 免费网站封装app平台连接
  • 网站预算表怎么做怎么让客户主动找你
  • 网站建设 前端 后端网络推广专员是干什么的
  • 一个真正的网站需要怎么做免费推广app软件下载
  • 网站如何做中英文双语言版本北京百度推广优化公司
  • 永川集团网站建设178软文网
  • 网站没有被收录原因优化推广网站淄博
  • 做网站英文怎么说品牌营销和市场营销的区别
  • 戴尔网站建设和维护网店运营策划方案
  • 同心县建设局网站关键词免费
  • 建筑资质证书查询网站网上软文发稿平台
  • 网站开发项目质量控制措施打开官方网站
  • 网站常用的推广方法有哪些高端定制网站建设公司
  • 张店易宝网站建设个人博客网页制作
  • 会泽住房和城乡建设局网站太原百度seo排名软件
  • 百度seo网站排名hs网站推广
  • php网站建设费用关键词云图
  • 网站广告怎么放西安seo优化公司
  • 关注城市建设网站简述优化搜索引擎的方法
  • 外贸网站哪家好网站批量查询工具
  • 记事本做网站背景色怎么弄数据查询网站
  • 做网站商城怎么样郑州seo哪家专业
  • 延安有哪些做网站的公司重庆森林影评