`

javase多肽

 
阅读更多

一、前提

继承+重写 +父类引用指向子类对象。

ps:当使用父类引用指向子类对象的时候,只能使用子类中的延续方法和重写方法。如果要使用新增方法必须进行强转。例如:

QQ是Car的子类

Car car =new QQ();

QQ qq =(QQ)car;//只有这样才能调用QQ类的新增方法

 

二、多肽的常见方式

1、返回类型使用父类型

例如:简单工厂模式

2、形式使用父类型

public static  void test(Car car)

使用这种方法签名,调用的时候可以传各种车的子类

 

三、属性不能多肽

Car car = new QQ();

打印car.type  结果是car。这说明属性不能多态

 

调用car.run()方法,输出的结果是QQ光脚的不怕穿鞋的。这里发生了多肽,并且方法对于属性的选择遵循就近原则。如:QQ的run方法选择了离他近的type

例2:

class Sub extends Base{public static final String FOO = "bar";}

public class Base{

  public static final String FOO = "foo";

}

//s = Sub  

 System.out.print(((Base)s).FOO);

运行结果是foo,因为s被强转成了父类,只能打印父类的属性

 

 

四、类型转化

1、关系

   1)、父类是父类
   2)、子类是子类
   3)、子类是父类
   4)、父类不是子类
   5)、子类不是其他子类

 

2、自动类型转化

父类 = 子类,即:父类引用指向子类的时候发生总动类型转化

 

3、强制类型转化

小类型变量  =(小类型)大类型值  ps:小类型是子类,大类型是父类

ps:要注意下面的这种错误

Bmw和QQ都是Car的子类

qq2 =(QQ)((Car)bmw);

上面的代码过得了编译,但会发生运行错误,抛出ClassCastException

 

4、使用instanceof关键字,避免ClassCastException

1)使用方法:引用 instanceof 类名

如果引用指向的对象是与类名同辈或者是类名的儿子、孙子等直系亲属则返回true,否则返回false.

如果引用(不是引用指向的类)和类名不在同一条继承链上,则会出现编译错误

 

 五、一点题外话

equals:默认比较地址,需要比较内容 对其重写

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

  • 大小: 39.4 KB
  • 大小: 46.4 KB
分享到:
评论

相关推荐

    javase-2.2-API文档-中文版.zip

    赠送jar包:javase-2.2.jar; 赠送原API文档:javase-2.2-javadoc.jar; 赠送源代码:javase-2.2-sources.jar; 赠送Maven依赖信息文件:javase-2.2.pom; 包含翻译后的API文档:javase-2.2-javadoc-API文档-中文...

    JavaSE_JavaSE学习资料_

    JavaSE,全称为Java Standard Edition,是Java平台的核心部分,主要面向桌面应用和服务器端开发。这个编程资料包涵盖了JavaSE的学习资源,旨在帮助开发者掌握Java的基础知识、集合框架、IO流等关键概念。 首先,...

    JavaSE项目最终总结

    JavaSE(Java Standard Edition)是Java编程语言的核心部分,它为开发桌面应用程序、服务器端应用程序以及网络应用提供了基础框架和工具。在这个“JavaSE项目最终总结”中,我们将深入探讨JavaSE的重要概念、核心...

    JavaSE1.6参考文档

    JavaSE 1.6 参考文档 JavaSE 1.6 API

    JavaSE李学重讲义

    JavaSE,全称为Java Standard Edition,是Java平台的核心部分,主要面向桌面应用和服务器端开发。这个讲义可能涵盖了Java编程语言的基础知识、核心概念以及高级特性,旨在帮助学习者全面掌握Java编程技能。 首先,...

    王道JavaSE阶段测试

    【标题】"王道JavaSE阶段测试"涵盖了Java标准版(Java Standard Edition,简称JavaSE)的核心编程知识,这是学习Java编程的基础阶段。这个阶段主要目的是掌握Java语言的基本语法、面向对象编程概念以及常用的数据...

    javase脑图.emmx

    javase脑图.emmx

    javase-3.3.3-API文档-中文版.zip

    赠送jar包:javase-3.3.3.jar; 赠送原API文档:javase-3.3.3-javadoc.jar; 赠送源代码:javase-3.3.3-sources.jar; 赠送Maven依赖信息文件:javase-3.3.3.pom; 包含翻译后的API文档:javase-3.3.3-javadoc-API...

    学习JavaSE的全面的课件

    学习JavaSE的全面的课件学习JavaSE的全面的课件学习JavaSE的全面的课件学习JavaSE的全面的课件学习JavaSE的全面的课件学习JavaSE的全面的课件学习JavaSE的全面的课件学习JavaSE的全面的课件学习JavaSE的全面的课件...

    黑马程序员Javase笔记

    "黑马程序员Javase笔记"是一个自学者在学习黑马程序员提供的Java全套课程过程中整理的笔记,主要涵盖了Java Standard Edition (Javase) 的核心内容。下面将详细讨论其中的关键知识点。 首先,DOS命令是操作系统中的...

    JAVASE基础知识详解

    JAVASE基础知识详解

    javaSEjavaSE

    JavaSE(Java Standard Edition)是Java开发平台的一个核心组件,主要针对桌面应用和服务器端应用程序的开发。它提供了丰富的类库和API,使得开发者能够构建跨平台的应用程序。JavaSE包含了JVM(Java虚拟机)、Java...

    JavaSE基础.md

    JavaSE基础.md

    javaSE面试题合集

    JavaSE面试题合集及其答案,基本包括javaSE所有知识点和详细解释 。

    三年JavaEE开发积累的那些代码之一:JavaSE篇完整实例源码

    三年JavaEE开发积累的那些代码之一:JavaSE篇 有什么? 1)自己写的例子:或是为了项目中应用写的demo,或是为了学习某项技术写的demo。 2)网上下载的例子:或改过或没改过,或完善过或原封没动。 没什么? 1)公司...

    JavaSE.zip

    JavaSE,全称为Java Standard Edition,是Java编程语言的核心部分,主要用于桌面应用和服务器端开发。这个压缩包“JavaSE.zip”包含了丰富的学习资源,旨在帮助开发者深入理解和掌握JavaSE的各项基础概念和技术。 ...

    javase阶段15个实战项目代码

    JavaSE(Java Standard Edition)是Java编程语言的基础部分,它提供了用于开发桌面应用程序的类库和API。在JavaSE阶段,学习者会接触到许多核心概念和技术,这些在后续的JavaEE(企业版)和Android开发中都至关重要...

    JavaSE总结文档.rar

    JavaSE(Java Standard Edition)是Java编程语言的核心部分,它提供了编写桌面应用程序所需的基础类库。这份"JavaSE总结文档.rar"包含了一份个人在复习JavaSE时编写的笔记,覆盖了多个主题,旨在巩固和深化对Java...

    JavaSE总结.xmind

    JavaSE总结.xmind

    JavaSE25套习题(含答案)

    JavaSE,全称为Java Standard Edition,是Java编程语言的核心部分,用于开发桌面应用程序。这个压缩包文件包含了25套JavaSE的习题及其答案,旨在帮助开发者巩固基础知识,为面试做好准备。JavaSE涵盖了许多关键知识...

Global site tag (gtag.js) - Google Analytics