黑马程序员 知识点总结-Java多态
来源:互联网 发布:centos7 iso yum源 编辑:程序博客网 时间:2024/05/21 21:35
多态性
可以理解为事物存在的多种体现形态。
abstract class Animal {public abstract void eat();}class Cat extends Animal {public void eat() {System.out.println("fish");}public void catchMouse() {System.out.println("Catch Mouse");}}class Dog extends Animal {public void eat() {System.out.println("bone");}public void kanJia() {System.out.println("KAanJia");}}class DuotaiDemo {public static void man(String[] args) {Animal c = new Cat(); // 多态的体现Animal d = new Dog(); // 多态的体现fun(new Cat()); // 多态的出现大大提高了程序的扩展性}public static void fun(Animal a) // 提高了代码的复用性{a.eat();}}
多态的体现
父类的引用指向自己的子类对象,父类的引用也可以接收自己的子类对象
父类父类引用 = new子类实例(Animal c = new Cat())
多态的前提
必须是类与类之间必须有关系,要么继承,要么实现,并且存在覆盖
多态的转型
向上转型(自动完成) 父类父类引用 = new子类实例(Animal c = new Cat())
向下转型(强制转换) 子类子类引用 = (子类)父类引用(Cat c1 = (cat)c)
能够进行向下转型的只能是子类进行向上转型的父类应用转换成原来的子类
*instanceof关键字
Instanceof是Java中的二运运算符,也是Java中的保留关键字,作用是测试左边的对象是否是右边类的实例
Cat c= new Cat();
If(c instanceof Cat)
System.out.println(“c是Cat的实例”);
*多态中非静态成员函数的特点:
在编译时期:参阅父类中是否有调用的方法,如果有则编译通过,否则编译失败
在运行时期:运行子类的方法
*多态中成员变量的特点
无论编译还是运行,都参考左边(引用变量所属的类)
class Fu {int x = 5;public static void method() {System.out.println("Fu method");}}class Zi extends Fu {int x = 8;public static void method() {System.out.println("Zi method");}public static void main(String[] args) {Fu z = new Zi();System.out.println(z.x); // 结果为5Zi z1 = new Zi();System.out.println(z1.x); // 结果为8}}
*多态中静态成员函数的特点
无论编译还是运行,都参考左边(引用变量所属的类)
public static void main(String[] args)
{
Fuzi = new Zi();
zi.method(); //结果是Fu method
Zizi = new Zi();
zi.method(); //结果是Zi method
}
多态的好处
多态的出现大大的提高了程序的扩展性。
多态的弊端
只能使用父类的引用访问父类中的成员,而不能访问子类所特有的成员。
----------------------Android培训、Java培训、期待与您交流! ----------------------
- 黑马程序员 知识点总结-Java多态
- 黑马程序员 知识点总结-Java内部类
- 黑马程序员 知识点总结-Java异常
- 黑马程序员 知识点总结-Java多线程
- 黑马程序员 知识点总结-Java继承
- 黑马程序员 知识点总结-Java泛型
- 黑马程序员 知识点总结-Java IO(一)
- 黑马程序员 知识点总结-Java GUI
- 黑马程序员 知识点总结-Java网络编程
- 黑马程序员 知识点总结-Java正则表达式
- 黑马程序员 知识点总结-Java反射
- 黑马程序员 知识点总结-Java注解
- 黑马程序员---Java高新技术反射知识点总结
- 黑马程序员-java面向对象知识点总结
- 黑马程序员--java基础知识点总结
- 黑马JAVA知识点总结
- 黑马程序员 知识点总结-一部分
- 黑马程序员-HTLM知识点总结
- 编写一个程序,循环从键盘接收一批学生的某门课的成绩,并依次保存在数组score的相应元素中,直到输入的成绩为999时结束。
- 10、UISlider-OC+UI
- OpenGL ES着色器语言之变量和数据类型(操作数)
- 游戏玩起来很简单
- 【转】TLibVideoIO库分析
- 黑马程序员 知识点总结-Java多态
- Android 之窗口小部件详解--App Widget
- 介绍了C + + 11
- ICONIX UML 分析
- TMTS 或者athrun的演示视频
- HACMP步骤
- 驱动程序如何发通知给应用程序
- AUPE学习第三章------文件I/O2
- 数据仓库的难点和痛点