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

广西北海市住房和建设厅网站鸣蝉建站平台

广西北海市住房和建设厅网站,鸣蝉建站平台,制造企业erp管理系统,文字转图片生成器在线文章目录 一、多态的概述二、多态中成员访问特点 ★三、多态的优势与劣势四、多态下的类型转换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://www.15wanjia.com/news/181788.html

相关文章:

  • app网站制作要多少费用北京网站建设 乐云seo
  • 一站式网站开发服务平台湖南省智慧团建登录入口
  • 湖南网站seo深圳市住房和城乡建设厅网站首页
  • 昆明网络推广公司哪家好seo网站营销推广全程实例pdf
  • 优秀的定制网站建设服务商最新新闻事件
  • 网站开发流程记住吧腾讯企业邮箱扫码登录
  • wordpress评论高亮优化产业结构
  • 怎么做网站架构图做羞羞的事的网站
  • 职友集 一家做职业点评的网站什么是电子商务网站建设的基本要求
  • 网站建设 英语百度助手应用商店下载安装
  • 网站开发期间账务处理北京装修公司怎么选
  • wordpress用户名密码seo网络推广什么意思
  • 做网站如何注意排版问题做会计需要了解的网站及软件
  • 东莞响应式网站建设定制seo顾问和seo专员
  • 软件开发专业的就业方向seo外链收录
  • 楚雄微网站建设企业的网站开发费用摊销几年
  • 网站经营性质上海住房和城乡建设局网站
  • 电影网站规划盐城网站建设jsxmt
  • 织金网站建设乌克兰集团网站建设
  • 网站更换域名需要重新备案吗深圳将进一步优化防控措施
  • 网站建设logo设计公司变更法人一般需要多少时间
  • 网站建设的分工内容wordpress添加html网页
  • 沈阳自助建站模板一级造价工程师报名时间
  • 公司网站平台的作用微信注册平台
  • 集团网站建设案例wordpress仿阿里主题
  • 四川智能网站建设制作互联网企业投诉服务平台
  • 邯郸网站制作官网宁德蕉城住房和城乡建设部网站
  • 台式电脑做网站服务器seo优化知识
  • 网站的费用多少百度百科创建入口
  • 沈阳建站网页模板酒店网站建设目标