13、java中的多态
1,多态的体现
	父类的引用指向了自己的子类对象。
	父类的引用也可以接收自己的子类对象。
2,多态的前提
	必须是类与类之间有关系。要么继承,要么实现。
	通常还有一个前提:存在覆盖。
3,多态的好处
	多态的出现大大的提高程序的扩展性。
4,多态的弊端:
	虽然提高了扩展性,但是只能使用父类的引用访问父类中的成员。
5,多态的应用
6,多态的出现代码中的特点(多态使用的注意事项)
/*
java中的多态
*/
abstract class Animal
{
abstract void eat();
} class Dog extends Animal
{
public void eat()
{
System.out.println("Dog eat");
}
public void watchDoor()
{
System.out.println("Watch Door");
}
} class Cat extends Animal
{
public void eat()
{
System.out.println("Cat eat");
}
public void catchMouse()
{
System.out.println("Catch Mouse");
}
} class DuoTaiDemo
{
public static void main(String[] args)
{
Animal a = new Dog(); //类型提升---向上转型。
a.eat();
//如果想要调用子类的特有方法时,强制将父类的引用。
//转成子类类型。向下转型。
Dog d = (Dog)a;
d.watchDoor(); //千万不要出现这样的操作,就是将父类对象转成子类类型。
//我们能转换的是父类应用指向了自己的子类对象时,该应用可以被提升,也可以被强制转换。
//多态自始至终都是子类对象在做着变化。 function(new Dog());
function(new Cat());
}
/*
instanceof : 用于判断对象的类型。 对象 intanceof 类型(类类型 接口类型)
*/
public static void function(Animal a)
{
a.eat();
if(a instanceof Cat)
{
Cat c = (Cat)a; //这里调用特有方法要向下转型
c.catchMouse();
}
else if(a instanceof Dog)
{
Dog d = (Dog)a;
d.watchDoor();
}
}
}
注意多态中的类型的向上的提升和使用时注意需要进行类型的向下转型。
还有就是一个重要的关键字instanceof的应用。
在多态中成员函数的特点:
在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。
在运行时期:参阅对象所属的类中是否有调用的方法。
简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。
在多态中,成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)。
在多态中,静态成员函数的特点:
无论编译和运行,都参考做左边。
13、java中的多态的更多相关文章
- java中实现多态的机制是什么?
		
多态性是面向对象程序设计代码重用的一个重要机制,我们曾不只一次的提到Java多态性.在Java运行时多态性:继承和接口的实现一文中,我们曾详细介绍了Java实现运行时多态性的动态方法调度:今天我们再次 ...
 - Java 中的多态,一次讲个够之接口实现关系中的多态
		
上文还没有写完,这一篇继续 Java 中的多态,一次讲个够之继承关系中的多态 https://www.cnblogs.com/qianjinyan/p/10824576.html 接口实现关系,和继承 ...
 - 通过实例聊聊Java中的多态
		
Java中的多态允许父类指针指向子类实例.如:Father obj=new Child(); 那么不禁要发问?? 使用这个父类型的指针访问类的属性或方法时,如果父类和子类都有这个名称的属性或方法,哪 ...
 - Java中实现多态的条件是什么
		
java中实现多态需要三个条件: 1,需要有继承关系的存在. 2,需要有方法的重写. 3,需要有父类的引用指向子类对象.
 - 深度分析:理解Java中的多态机制,一篇直接帮你掌握!
		
Java中的多态 1 多态是什么 多态(Polymorphism)按字面的意思就是"多种状态".在面向对象语言中,接口的多种不同的实现方式即为多态.用白话来说,就是多个对象调用同一 ...
 - 深入理解Java中的多态
		
一.什么是多态? 多态指同一个实体同时具有多种形式.它是面向对象程序设计(OOP)的一个重要特征.如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的. 二.多态是如何实现的? ...
 - Java 中的多态,一次讲个够之继承关系中的多态
		
多态是继封装.继承之后,面向对象的第三大特性. 现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态. Java作为面向对象的语言,同样可以描述一个 ...
 - java中的多态总结
		
一.多态的概述 ava作为面向对象的语言,同样可以描述一个事物的多种形态.如Student类继承了Person类,一个Student的对象便既是Student,又是Person. Java中多态的代码 ...
 - Java中的多态
		
1.多态:具有表现多种形态的能力的特征 父类: public abstract class Animal {public abstract void Say();} 子类: public class ...
 
随机推荐
- 学习linux/unix编程方法的建议(转)
			
假设你是计算机科班出身,计算机系的基本课程如数据结构.操作系统.体系结构.编译原理.计算机网络你全修过 我想大概可以分为4个阶段,水平从低到高从安装使用=>linux常用命令=>linux ...
 - PHP的几个常用函数的使用总结
			
1.date函数:不得不说,PHP的date函数已经基本很完备了,如果你不去读PHP的手册的话,你不会发现对日期做了那么多的支持. time() 获取当前的时间戳 data() 获取自己想要的时间格 ...
 - freemarker string= null
			
在java代码中经常会出现以下代码: String name; …………………… if(null == name || name.length == 0){ return; } 这行代码用freema ...
 - Ubuntu14.04安装build-essential失败,包依赖问题如何解决?
			
正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 有一些软件包无法被安装.如果您用的是 unstable 发行版,这也许是 因为系统 ...
 - Appweb写法
			
web.xml v2.3 <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web- ...
 - 内存管理 - MEMORY POOL
			
内存池优势: 效率高,频繁的new和delete效率低下 减少内存碎片,反复向系统申请和释放内存会产生大量内存碎片 防止内存泄露 内存池设计思路: 内存池可以根据实际需要,设计成不同的样子.下面是针对 ...
 - 从csv文件导数据到MySQL
			
导入: load data local infile 'D:\\top-1m.csv' (注意要加上local)10.21.into table `site` fields terminated ...
 - web设计中那些因素可能影响网站后期优化
			
web设计中那些因素可能影响网站后期优化. 1.网站代码的简洁实用性.网站源文件html代码.js代码.css代码等应尽可能的压缩处理.能用jquery-min.js的最好不要用jquery.js:c ...
 - cs231n笔记:最优化
			
本节是cs231学习笔记:最优化,并介绍了梯度下降方法,然后应用到逻辑回归中 引言 在上一节线性分类器中提到,分类方法主要有两部分组成:1.基于参数的评分函数.能够将样本映射到类别的分值.2.损失函数 ...
 - 一个assert的写法
			
]; int assert_buf_len; #ifdef XXX_DEBUG #define assert(expr, ...) \ do{ \ if ((!(expr))) \ {\ char * ...