java中的多态
来源:互联网 发布:mac如何输入大写字母 编辑:程序博客网 时间:2024/06/06 14:23
一、如何理解多态
一个对象有多种状态,可以作为它自己本身的类型使用,也可以作为它的基类类型使用。
三个要素:(1) 要有继承
(2) 向上转型:接口定义中参数是基类型,调用时传具体的子类型
(3) 后期绑定(运行时绑定)
二、举例
import java.util.*;class Shape {public void draw() {}}class Circle extends Shape {public void draw() {System.out.println("draw-Circle");}}class Square extends Shape {public void draw() {System.out.println("draw-Square");}}class Triangle extends Shape {public void draw() {System.out.println("draw-Triangle");}}class MakeShape {public static void drawShape(Shape shape) {shape.draw();}}class RandomShape {private Random rand = new Random(47);public Shape getShape() {switch(rand.nextInt(3)) {default:case 0: return new Circle();case 1: return new Square();case 2: return new Triangle();}}}public class Test {public static void main(String[] args) {// TODO Auto-generated method stubRandomShape gen = new RandomShape();for (int i = 0; i < 5; i++) {MakeShape.drawShape(gen.getShape());}}}
三、若不使用多态
class MakeShape {public static void drawShape(Circle circle) {circle.draw();}
<span style="white-space:pre"></span>public static void drawShape(Square square) {square.draw();}
</pre><pre name="code" class="java" style="font-size: 18px;"> public static void drawShape(Triangle triangle) {triangle.draw();}}
若是再添加新几何形时,如六边形,梯形,那么MakeShape中还要做相应的判断,这就违背了开放封闭原则。
0 0
- Java 中的多态
- java中的多态
- java中的多态
- Java中的多态
- Java中的多态
- Java中的多态
- Java 中的多态
- java中的多态
- java中的多态
- Java中的多态
- Java 中的多态
- Java中的多态
- Java中的多态
- java中的多态
- Java中的多态
- java中的多态
- java中的多态
- Java中的多态
- github的一点小心得
- OSPF特殊区域之NSSA
- mysql
- mysql统计字段中某一字符串出现的次数
- 动态语义错误
- java中的多态
- MongoDB数据库 基础知识
- 棋盘游戏&&binaryA+B<Dp,Dfs_with_Mem>
- c#异步socket
- Java集合之Hashtable
- 最小二乘法(4)
- Ret Hat Linux系统英文安装中文显示小方框问题解决
- Android网络状态监听,wifi强度监听
- [iOS]把字符串汉字转换成UTF-8编码