• 多态性
  • instanceof 关键字
  • 接口的应用

一、多态性

1.多态性的体现:

方法的重载和重写

对象的多态性

2.对象的多态性:

  • 向上转型: 程序会自动完成

    父类 父类对象 = 子类实例

  • 向下转型: 强制类型转换

    子类 子类对象 = (子类)父类实例

  1. class A{
  2. public void tell1(){
  3. System.out.println("A--tell1");
  4. }
  5. public void tell2(){
  6. System.out.println("A--tell2");
  7. }
  8. }
  9. class B extends A{
  10. public void tell1(){
  11. System.out.println("B--tell1");
  12. }
  13. public void tell3(){
  14. System.out.println("B--tell3");
  15. }
  16. }
  17. public class test01 {
  18. public static void main(String[] args)
  19. {
  20. //向上转型——系统自动完成
  21. B b = new B();
  22. A a = b; //子类对象赋值给父类对象
  23. a.tell1(); //方法重写,output :B--tell1
  24. a.tell2(); //OUTPUT: A--tell2
  25. //向下转型——强制转换
  26. A a = new B(); //子类赋值给父类,部分匹配
  27. B b = (B)a;
  28. b.tell1();
  29. b.tell2();
  30. b.tell3();
  31. OUTPUT:
  32. B--tell1
  33. A--tell2
  34. B--tell3
  35. }
  36. }

二、instanceof关键字

2.1 用于判断一个对象到底是不是一个类的实例

返回值为布尔类型

  1. class A{
  2. public void tell1(){
  3. System.out.println("A--tell1");
  4. }
  5. public void tell2(){
  6. System.out.println("A--tell2");
  7. }
  8. }
  9. class B extends A{
  10. public void tell1(){
  11. System.out.println("B--tell1");
  12. }
  13. public void tell3(){
  14. System.out.println("B--tell3");
  15. }
  16. }
  17. public class test01 {
  18. public static void main(String[] args)
  19. {
  20. A a = new A ();
  21. System.out.println(a instanceof A);
  22. System.out.println(a instanceof B);
  23. A a1 = new B ();
  24. System.out.println(a1 instanceof A);
  25. System.out.println(a1 instanceof B);
  26. }
  27. }
  28. OUTPUT:
  29. true
  30. false
  31. true
  32. true

三、接口应用

  1. interface USB{
  2. void start();
  3. void stop();
  4. }
  5. class C {
  6. public static void work(USB u ){
  7. u.start();
  8. System.out.println("Working");
  9. u.stop();
  10. }
  11. }
  12. class USBdisk implements USB{
  13. public void start(){
  14. System.out.println("the USB Disk is working");
  15. }
  16. public void stop(){
  17. System.out.println("the USB Disk stopped");
  18. }
  19. }
  20. public class inter01 {
  21. public static void main(String[] args) {
  22. // TODO Auto-generated method stub
  23. C.work(new USBDisk());
  24. }
  25. }

【JAVA语法】04Java-多态性的更多相关文章

  1. Java语法知识总结

    一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: ...

  2. 将子类对象引用赋值给超类对象 JAVA 编译时多态性

    将子类对象引用赋值给超类对象 JAVA 编译时多态性(转) (2012-05-10 11:24:05) 转载▼ 标签: 杂谈 分类: 也无晴_soft 1.通过将子类对象引用赋值给超类对象引用变量来实 ...

  3. Java语法

    java语法: 一个java程序可以说是一系列对象的集合,而这些对象都要通过调用彼此的方法来协同工作. 对象: 对象是一个实例,例如:一只猫,它是一个对象,有状态和行为.它的状态状态有:颜色,名字,品 ...

  4. Java语法糖1:可变长度参数以及foreach循环原理

    语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的 ...

  5. 程序员带你学习安卓开发,十天快速入-对比C#学习java语法

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  6. Java语法基础(1)

    Java语法基础(1) 1.      Java是一门跨平台(也就是跨操作系统)语言,其跨平台的本质是借助java虚拟机 (也就是JVM(java virtual mechinal))进行跨平台使用. ...

  7. C++、Java语法差异对照表

    C++.Java语法差异对照表 C++ and Java Syntax Differences Cheat Sheet First, two big things--the main function ...

  8. jsp页面执行java语法,获取的值在页面调用

    首先在页面头引用用到类的包路径 写需要执行的java语法 页面转换引用 <!-- 引用包路径 --> <%@ page language="java" impor ...

  9. Java语法之反射

    一.反射机制 在前面Java语法之注解自定义注解时我们也有提到反射,要获取类方法和字段的注解信息,必须通过Java的反射技术来获取 Annotation对象.那什么是反射呢?JAVA反射机制是在运行状 ...

  10. Java语法糖设计

    语法糖 Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的字节码或者特定的方式对这 ...

随机推荐

  1. 爱漂泊人生 30个php操作redis常用方法代码例子

    http://www.justwinit.cn/post/8789/ 背景:redis这个新产品在sns时很火,而memcache早就存在, 但redis提供出来的功能,好多网站均把它当memcach ...

  2. 原来部署好的WCF(可以调用),因为部署.net core,而安装了DotNetCore.2.0.5-WindowsHosting,导致现在WCF站点不可以。

    报错如下: 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面. 解决方法: 如果出现如下结果,则证明可以啦.

  3. 剑指offer——面试题22:链表中倒数第k个节点

    注意代码的鲁棒性! 函数: ListNode* TheLastKthNode(ListNode* pHead,int k) { ) return nullptr; ListNode* quickNod ...

  4. cadence help文件库调出指令 :cdnshelp

    cadence help文件库调出指令 :cdnshelp 指令参数记录: Verilog 添加可编译文件后缀名 -vlog_ext +.h,.vh Verilog1995 添加可编译文件后缀名 -v ...

  5. Java基础28-继承

    /* 继承的概述: 1.提高了代码复用性,简化了代码 2.让类与类之间产生了继承关系,才有了后面的多态特性的存在 注意:千万不要为了获取其他类的功能简化代码,而建立继承关系,必须要类与类之间存在继承关 ...

  6. selenium+Python(Js处理浏览器滚动条)

    控制浏览器滚动条 有时候我们需要控制页面滚动条上的滚动条,但滚动条并非页面上的元素,这个时候就需要借助 js 是来进行操作.一般用到操作滚动条的会两个场景: 注册时的法律条文需要阅读,判断用户是否阅读 ...

  7. python API url 级联生成

    参考了一下公司 python 达人 rpc 接口级联 api 调用 rpc.api.users.list() rpc.api.login(username='',password='') rpc['a ...

  8. 深入redis内部--初始化服务器

    初始化服务器代码如下: void initServer() { int j; signal(SIGHUP, SIG_IGN); signal(SIGPIPE, SIG_IGN); setupSigna ...

  9. SSH基本概念和用途

    一.SSH是什么 简单的说,SSH是一种网络协议,主要用于客户端与远程主机的安全链接和交互. 二.常见用法1.客户端与远程主机的安全链接命令如下: $ ssh -p user@host 解释如下:-p ...

  10. 深入理解JavaScript系列(41):设计模式之模板方法

    介绍 模板方法(TemplateMethod)定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 模板方法是一种代码复用的 ...