java 多态 (知识点不完整)
2024-09-02 22:04:35
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("看家");
}
}
最新文章
- *HDU3047 并查集
- 《利用python进行数据分析》读书笔记--第六章 数据加载、存储与文件格式
- NSOperation使用
- Mac OS X系统下编译运行C代码
- 分布式实时日志处理平台ELK
- 001. 启动Visual Studio 2010报错
- C#实现GDI+基本图的缩放、拖拽、移动
- Java登陆测试
- 工作记录8:iOS 传值问题总结(7种传值完美介绍)
- 设定MS SQL Server 2008定期自动备份
- Git 常用命令手记 及 Github协同流程(转)
- ASP.NET虚拟路径小结
- 4.2 例题: 统计字符数 poj2247
- [Spark內核] 第41课:Checkpoint彻底解密:Checkpoint的运行原理和源码实现彻底详解
- python网络编程基础知识整理
- Zabbix 监控 Docker容器
- 20 个 Laravel Eloquent 必备的实用技巧
- python之类的多态(鸭子类型 )、封装和内置函数property
- Winform下透明Panel
- SQL[Err]ORA-00932: inconsistent datatypes: expected NUMBER got CHAR:
热门文章
- Bloom Filter的算法
- C++ GUI Qt4学习笔记08
- 【bzoj4551】【NOIP2016模拟7.11】树
- 决策树剪枝算法-悲观剪枝算法(PEP)
- element和iView初步研究(-)
- 【JavaScript】 模拟JQuery的连续调用函数
- win10 64 位安装 MySQL(mysql-5.7.17-winx64)
- localhost、127.0.0.1、本机ip、0.0.0.0 的区别
- 靠!老师居然叫我们去写博弈论!!!结果写了一个晚上的博弈论,简直要死QAQ。。。发发博客休息一下。。。TAT。。。
- 拆系数$FFT$($4$遍$DFT$)