多态(多态概述、对象的类型转换、Object类、匿名内部类)
来源:互联网 发布:地学软件 编辑:程序博客网 时间:2024/06/06 01:39
一、多态
多态:在同一个方法中由于传入的参数类型不同而导致执行效果不同的现象就叫做多态。
java为了实现多态,允许使用一个父类类型的变量来引用一个子类类型的对象,根据被引用子类对象特征的不同,得到不同的运行结果。
二、对象的类型转换
因为多态涉及到将子类对象当做父类类型使用的情况,所以我们要学习类型的转换。转换有两种,一种是向上转换,一种是向下转换。
向上转型:
//父类 父类对象 =子类实例
向下转型
//子类 子类对象=(子类) 父类实例
将子类对象当做父类使用时不需要任何显示的声明,但此时不能通过父类变量去调用子类中的某些方法。
java提供了一个关键字instanceof用来判断一个对象是否为某个类或(接口)的实例或者子类实例,通常和if搭配使用
if(animal instanceof Cat){//判断animal是否是Cat类的实例对象}else{}
三、Object类
所有类的父类,所有类都直接或者间接继承自该类
通常重写该类 toString()方法获得自己想要的信息
四、匿名内部类
前面说一个接口需要定一个类来实现。除此之外,还可以使用匿名内部类来实现接口。
首先看内部类方式如何实现
interface Animal{ void shout();}public class Example01{ public static void main (String [] args){ class Cat implements{ public void shout(){ System.out.print("这是一只猫"); } } animalShout(new Cat()); } public static void animalShout(Animal an){ an.shout(); }}
下面看匿名内部类如何写。
interface Animal{ void shout();} public class Example02{ public static void main (String [] args){ animalShout(new Cat(){ public void shout(){ System.out.print("这是匿名内部类的猫叫"); } }); } public static void animalShout(Animal an){ an.shout(); }}
匿名内部类是一种简便写法,在程序中不一定非要使用。
阅读全文
0 0
- 多态(多态概述、对象的类型转换、Object类、匿名内部类)
- Java重修之路(十)面向对象之多态详解,Object类,内部类,匿名内部类详解
- 07 java的object类和内部类, 匿名类和匿名对象
- 02、J2SE基础-对象类型的转换、多态性、匿名内部类
- NO8.java笔记【面向对象、抽象类、abstract、接口、interface、多态 、内部类、匿名内部类、异常、Object类】
- 黑马程序员_学习笔记:5) 面向对象3:多态、Object、内部类、匿名内部类
- 面向对象(高级篇之Object类与包装类与匿名内部类)
- 匿名内部类----概述
- 内部类、匿名类【对象】
- 黑马程序员--java基础--对象的多态、内部类、匿名内部类、异常处理机制
- 黑马程序员-Java学习04-接口,多态,内部类,匿名内部类,Object类
- Object、内部类、匿名内部类
- 黑马程序员----2015.6.16笔记(多态,接口,Object,内部类,匿名类,异常,throws)
- 15-面向对象(匿名内部类-概述) 1 2
- 内部类、匿名内部类和对象的初始化过程
- Java 匿名内部类 概述
- 12-20java面向对象之Object类&包装类&匿名内部类
- 面向对象高级——Object类、包装类以及匿名内部类
- cookie
- myeclipse搭建maven
- 【支付系统学习笔记】 一支付概述(1在线支付流程简介)
- 拓扑排序和关键路径
- Ubuntu14.04分辨率问题
- 多态(多态概述、对象的类型转换、Object类、匿名内部类)
- Json格式
- mybatis学习(三)--增删改查
- 二维数组中的查找
- 【Linux 内核网络协议栈源码剖析】系统网络协议栈初始化及数据传输通道建立过程
- DSP芯片的特点
- MySQL_005_基础_字符串
- CSS实现三角形图标的原理
- Qt主窗体显示最前 在delphi中使用Application.BringToFront;可以保证当前程序显示在最前。 然而今天在Qt中,没有类似函数供调用。 尝试了activeWindow,s