Java面向对象-------多态总结
1.多态:是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:
多态性是对象多种表现形式的体现。
2.多态作用:
- 1. 消除类型之间的耦合关系
- 2. 可替换性
- 3. 可扩充性
- 4. 接口性
- 5. 灵活性
- 6. 简化性
3.多态的三个必要条件:
- 继承
- 重写
- 父类引用指向子类对象
4.多态处理属性
父类有,子类也有,获取的是父类的属性
父类有,子类没有,获取的是父类的属性
父类没有,子类有,获取不到
父类没有,子类没有,获取不到
注意:编译看左边,运行看左边
编译器编译完成之后,类型确定,但是对象无法确定,只有在运行的时候,new什么对象,就是什么对象
5.多态处理方法
父类有,子类也有,获取的是子类的方法 (方法重写)
父类有,子类没有,获取的是父类的方法
父类没有,子类有,获取不到
父类没有,子类没有,获取不到
注意:编译看左边,运行看右边 (方法重写)
6.多态的体现形式:
向上转型:父类的引用指向子类的对象
父 f = new 子();
向下转型:把父类引用执行的子类对象强制转为子类类型
子 z = (子)f;
注意:无论是基本类型还是引用类型,小转大都是自动的,大转小都是强制的,
注意:类型越抽象,功能越少,类型越具体,功能越强大
注意:引用类型之间做转换,必须要有继承关系
7.类型转换
(1):自动转换 向上转型
子类对象转为父类类型
语法: 父类 父类对象 = 子类实例,
(2):强制转换 向下转型
把父类引用子类的对象转为子类本身(父类对象变为子类对象,)
语法: 子类 子类对象 = (子类)父类实例,强制
实际开发中,多态很常用,创建子类对象,尽量使用多态来创建,可以提高代码的灵活性和扩展性
说明:利用封装,继承,多态的知识写一个Java程序
题目要求:
编写程序实现比萨制作。需求说明编写程序,接收用户输入的信息,选择需要制作的比萨。可供选择的比萨有:培根比萨和海鲜比萨。
实现思路及关键代码
(1)分析培根比萨和海鲜比萨
(2)定义比萨类
(3)属性:名称、价格、大小
(4)方法:展示
(5)定义培根比萨和海鲜比萨继承自比萨类
(6)定义比萨工厂类,根据输入信息产生具体的比萨对象
Java面向对象-------多态总结的更多相关文章
- Java面向对象多态
Java面向对象多态 7.2对象 7.2.1创建对象 对象是类的实例 类的名称 对象名称 = new 类的名称(); 7.3继承 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域 ...
- JAVA面向对象-多态的理解
面向对象编程有三个特征,即封装.继承和多态. 封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据. 继承是为了重用父类代码,同时为实现多态性作准备.那么什么是多 ...
- java 面向对象 — 多态
注意:如果用父类引用指向子类对象的时候.不可以调用,子类中有但是父类中没有的方法. 抽象 方法没有具体方法,以分号结束.例:public abstract void call(); 1.接口必须要有a ...
- Java面向对象—多态
概述:同一个事物,在不同的时刻表现出不同的状态. 代码中如何体现: 要有继承, 要有方法重写, 父类引用指向子类对象 多态的成员访问特点 成员变量:编译看左边(父类), 运行看左边 成员方法:编译看左 ...
- JAVA面向对象-----多态
多态的概述 1:什么是多态 一个对象的多种状态 (老师)(员工)(儿子) 教师 a =老钟; 员工 b= 老钟; 2:多态体现 1:Father类 1:非静态成员变量x 2:静态成员变量y 3:非静态 ...
- Java面向对象----多态概念,对象上下转型
概念:同一操作作用于某一类对象,可以有不同的解释,产生不同的执行结果 多态存在的三个必要条件 需要存在继承和实现关系 同样的 方法调用而执行不同操作,运行不同的代码(重写操作) 在运行时父类或者接口的 ...
- Java面向对象的多态
Java中多态的概念是面向对象中除封装和继承外非常重要的知识点,也是Java面向对象三大特性最后一个特性 多态其实就是指对象存在的多种形态,多态分为引用多态和方法多态 引用多态的含义就是:父类的引用可 ...
- JAVA 面向对象中的多态
多态是继封装.继承之后,面向对象的第三大特性. 现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态. Java作为面向对象的语言,同样可以描述一个 ...
- 3.java面向对象编程三大特性之多态
面向对象编程的三大特性:封装.继承.多态 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对类的外部而言它的内部实现细节是隐藏的,暴露给外界的只是它的实现方法. ...
随机推荐
- Spring IOC 容器源码分析系列文章导读
1. 简介 Spring 是一个轻量级的企业级应用开发框架,于 2004 年由 Rod Johnson 发布了 1.0 版本.经过十几年的迭代,现在的 Spring 框架已经非常成熟了.Spring ...
- docker容器间跨主机通信
http://jnzg905.iteye.com/blog/2269583 https://blog.csdn.net/pingpangbing0902/article/details/7823889 ...
- IO模型 IO多路复用
阻塞IO 用socket 一定会用到accept recv recvfrom这些方法正常情况下 accept recv recvfrom都是阻塞的 非阻塞IO 如果setblocking(False) ...
- [NOI2017]蔬菜(贪心)
神仙题啊! 早上开了两个多小时,终于肝出来了,真香 我们考虑从第 \(10^5\) 天开始递推,先生成 \(p=10^5\) 的解,然后逐步推出 \(p-1,...,2,1\) 的解. 那怎么推出 \ ...
- apache ab
ab -p postfile.json -T 'application/json' -n 100 -c 10 -v 2 http://192.168.1.103:3002/checkStashSlot ...
- <转>php中heredoc与nowdoc的使用方法
http://www.361way.com/php-heredoc-nowdoc/3008.html 一.heredoc结构及用法 Heredoc 结构就象是没有使用双引号的双引号字符串,这就是说在 ...
- mysql多列索引
1,数据库每次查询只能使用一个索引 2,假设数据 表T (a,b,c) rowid 为物理位置rowid a b c(1) 1 1 1(2) 2 1 13(3) 2 2 14(4) 1 3 3(5) ...
- Java并发编程总结2——慎用CAS
一.CAS和synchronized适用场景 1.对于资源竞争较少的情况,使用synchronized同步锁进行线程阻塞和唤醒切换以及用户态内核态间的切换操作额外浪费消耗cpu资源:而CAS基于硬件实 ...
- AjaxResult
package com.sprucetec.tms.utils; /** * AjaxReturn * * @author Yinqiang Du * @date 2016/7/12 */import ...
- linux下mysql的远程访问
安装了虚拟机centos,安装mysql后,在win7下无法用工具访问mysql.提示连接失败. 1.授权远程访问. GRANT ALL PRIVILEGES ON databasename.* TO ...