1.多态的条件

  1.要有继承

  2.方法重写

  3.父类引用指向子类对象


多态中成员访问

  1.   访问成员变量:  编译看左边,运行也看左边

    f.num = 10

    因为这里是父类的,看是父类Father

 main{
  Father f = new Son( )
  System.out.println( f.num);
} class Father {
int num = 10;} class Son extends Father {
int num = 20;}

  2.访问成员方法: 编译看左边,运行看右边( 子类 ) 。 动态绑定

  3.访问静态成员方法: 编译看左边,运行看左边( 父类 )

    静态和类相关,算不上重写,所以,还是和左边的父类

    因为静态是属于类的,由实例共享,所以只看当前引用变量所属的类中的静态方法。

 class Demo4_Animal {
public static void main(String[] args) {
//Cat c1 = new Cat();
//c1.eat();
method(new Cat());
method(new Dog()); //Animal a = new Cat(); 开发的是很少在创建对象的时候用父类引用指向子类对象,直接创建子类对象更方便,可以使用子类中的特有属性和行为
} //Cat c = new Dog();狗是一只猫,这是错误的
/*public static void method(Cat c) {
c.eat();
} public static void method(Dog d) {
d.eat();
}*/ //如果把狗强转成猫就会出现类型转换异常,ClassCastException
public static void method(Animal a) { //当作参数的时候用多态最好,因为扩展性强
//关键字 instanceof 判断前边的引用是否是后边的数据类型
if (a instanceof Cat) {
Cat c = (Cat)a;
c.eat();
c.catchMouse();
}else if (a instanceof Dog) {
Dog d = (Dog)a;
d.eat();
d.lookHome();
}else {
a.eat();
}
}
}
/*
* A:多态的好处
* a:提高了代码的维护性(继承保证)
* b:提高了代码的扩展性(由多态保证)
* B:案例演示
* 多态的好处
* 可以当作形式参数,可以接收任意子类对象
* C:多态的弊端
* 不能使用子类的特有属性和行为。
*/ class Animal {
public void eat() {
System.out.println("动物吃饭");
}
} class Cat extends Animal {
public void eat() {
System.out.println("猫吃鱼");
} public void catchMouse() {
System.out.println("抓老鼠");
}
} class Dog extends Animal {
public void eat() {
System.out.println("狗吃肉");
} public void lookHome() {
System.out.println("看家");
}
}

最新文章

  1. *HDU3047 并查集
  2. 《利用python进行数据分析》读书笔记--第六章 数据加载、存储与文件格式
  3. NSOperation使用
  4. Mac OS X系统下编译运行C代码
  5. 分布式实时日志处理平台ELK
  6. 001. 启动Visual Studio 2010报错
  7. C#实现GDI+基本图的缩放、拖拽、移动
  8. Java登陆测试
  9. 工作记录8:iOS 传值问题总结(7种传值完美介绍)
  10. 设定MS SQL Server 2008定期自动备份
  11. Git 常用命令手记 及 Github协同流程(转)
  12. ASP.NET虚拟路径小结
  13. 4.2 例题: 统计字符数 poj2247
  14. [Spark內核] 第41课:Checkpoint彻底解密:Checkpoint的运行原理和源码实现彻底详解
  15. python网络编程基础知识整理
  16. Zabbix 监控 Docker容器
  17. 20 个 Laravel Eloquent 必备的实用技巧
  18. python之类的多态(鸭子类型 )、封装和内置函数property
  19. Winform下透明Panel
  20. SQL[Err]ORA-00932: inconsistent datatypes: expected NUMBER got CHAR:

热门文章

  1. Bloom Filter的算法
  2. C++ GUI Qt4学习笔记08
  3. 【bzoj4551】【NOIP2016模拟7.11】树
  4. 决策树剪枝算法-悲观剪枝算法(PEP)
  5. element和iView初步研究(-)
  6. 【JavaScript】 模拟JQuery的连续调用函数
  7. win10 64 位安装 MySQL(mysql-5.7.17-winx64)
  8. localhost、127.0.0.1、本机ip、0.0.0.0 的区别
  9. 靠!老师居然叫我们去写博弈论!!!结果写了一个晚上的博弈论,简直要死QAQ。。。发发博客休息一下。。。TAT。。。
  10. 拆系数$FFT$($4$遍$DFT$)