一、前提
继承+重写 +父类引用指向子类对象。
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:默认比较地址,需要比较内容 对其重写
相关推荐
赠送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,全称为Java Standard Edition,是Java平台的核心部分,主要面向桌面应用和服务器端开发。这个编程资料包涵盖了JavaSE的学习资源,旨在帮助开发者掌握Java的基础知识、集合框架、IO流等关键概念。 首先,...
JavaSE(Java Standard Edition)是Java编程语言的核心部分,它为开发桌面应用程序、服务器端应用程序以及网络应用提供了基础框架和工具。在这个“JavaSE项目最终总结”中,我们将深入探讨JavaSE的重要概念、核心...
JavaSE 1.6 参考文档 JavaSE 1.6 API
JavaSE,全称为Java Standard Edition,是Java平台的核心部分,主要面向桌面应用和服务器端开发。这个讲义可能涵盖了Java编程语言的基础知识、核心概念以及高级特性,旨在帮助学习者全面掌握Java编程技能。 首先,...
【标题】"王道JavaSE阶段测试"涵盖了Java标准版(Java Standard Edition,简称JavaSE)的核心编程知识,这是学习Java编程的基础阶段。这个阶段主要目的是掌握Java语言的基本语法、面向对象编程概念以及常用的数据...
javase脑图.emmx
赠送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笔记"是一个自学者在学习黑马程序员提供的Java全套课程过程中整理的笔记,主要涵盖了Java Standard Edition (Javase) 的核心内容。下面将详细讨论其中的关键知识点。 首先,DOS命令是操作系统中的...
JAVASE基础知识详解
JavaSE(Java Standard Edition)是Java开发平台的一个核心组件,主要针对桌面应用和服务器端应用程序的开发。它提供了丰富的类库和API,使得开发者能够构建跨平台的应用程序。JavaSE包含了JVM(Java虚拟机)、Java...
JavaSE基础.md
JavaSE面试题合集及其答案,基本包括javaSE所有知识点和详细解释 。
三年JavaEE开发积累的那些代码之一:JavaSE篇 有什么? 1)自己写的例子:或是为了项目中应用写的demo,或是为了学习某项技术写的demo。 2)网上下载的例子:或改过或没改过,或完善过或原封没动。 没什么? 1)公司...
JavaSE,全称为Java Standard Edition,是Java编程语言的核心部分,主要用于桌面应用和服务器端开发。这个压缩包“JavaSE.zip”包含了丰富的学习资源,旨在帮助开发者深入理解和掌握JavaSE的各项基础概念和技术。 ...
JavaSE(Java Standard Edition)是Java编程语言的基础部分,它提供了用于开发桌面应用程序的类库和API。在JavaSE阶段,学习者会接触到许多核心概念和技术,这些在后续的JavaEE(企业版)和Android开发中都至关重要...
JavaSE(Java Standard Edition)是Java编程语言的核心部分,它提供了编写桌面应用程序所需的基础类库。这份"JavaSE总结文档.rar"包含了一份个人在复习JavaSE时编写的笔记,覆盖了多个主题,旨在巩固和深化对Java...
JavaSE总结.xmind
JavaSE,全称为Java Standard Edition,是Java编程语言的核心部分,用于开发桌面应用程序。这个压缩包文件包含了25套JavaSE的习题及其答案,旨在帮助开发者巩固基础知识,为面试做好准备。JavaSE涵盖了许多关键知识...