Java面向对象三大特点之多态

news/2025/2/26 21:16:38

概念:

多态是同一个行为具有多个不同表现形式或形态的能力。

多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:

多态性是对象多种表现形式的体现,同一个事件发生在不同的对象上会产生不同的结果。

现实中,比如我们按下 F1 键这个动作:

  • 如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;
  • 如果当前在 Word 下弹出的就是 Word 帮助;
  • 在 Windows 下弹出的就是 Windows 帮助和支持。

多态的优点

  • 1. 消除类型之间的耦合关系
  • 2. 可替换性
  • 3. 可扩充性
  • 4. 接口性
  • 5. 灵活性
  • 6. 简化性

多态存在的三个必要条件

  • 继承
  • 重写
  • 父类引用指向子类对象

比如:

Parent p = new Child();

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。

以下是一个多态实例的演示,详细说明请看注释:

public class Test {

    public class Deng {//父类Deng
        public void qiDong(){
            System.out.println("灯亮了");
        }
        public void tingZhi(){
            System.out.println("灯灭了");
        }
    }
    public class DengPao extends Deng {//子类DengPao继承父类Deng
        public void qiDong(){
            System.out.println("灯泡亮了");
        }
        public void tingZhi(){
            System.out.println("灯泡灭了");
        }
    }
    public class DengGuan extends Deng {//子类DengGuan继承父类Deng
        public void qiDong(){
            System.out.println("灯管亮了");
        }
        public void tingZhi(){
            System.out.println("灯管灭了");
        }
    }
public class KaiGuan { public void Kai(Deng d){ d.qiDong();//调用Deng中的qi.Dong方法 } public void Guan(Deng d){ d.tingZhi();//调用Deng中的tingZhi方法 } } public static void main(String[] args) { KaiGuan kg=new KaiGuan(); DengPao dp=new DengPao(); DengGuan dg=new DengGuan(); kg.Kai(dp);//调用类KaiGuan中的Kai方法,该方法中参数值为dp kg.Guan(dp); kg.Kai(dg); kg.Guan(dg); } }

 

执行以上程序,输出结果为:

灯泡亮了
灯泡灭了
灯管亮了
灯管灭了

 

转载于:https://www.cnblogs.com/jonsnow/p/6231893.html


http://www.niftyadmin.cn/n/1808702.html

相关文章

Math类和Random类

Math类 成员变量: (1)public static final double PI :圆周率 (2) public static final double E :自然对数的底数 成员方法: (1)public static int abs(int x):绝对值 注意&#xf…

java构造函数为什么加m._求高人解释!为什么我写的构造函数中public 报错!!!······...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼package gg;import java.awt.*;import javax.swing.*;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;public class Example2 extends JFrame {MyPanel mpnull;public static void main(String[] args) {Examp…

printf对齐

C语言中&#xff0c;将printf函数打印出的字符像表格一样分类对齐。%-10d表示这个字符型占10个字节&#xff0c;负号表示左对齐。即下面表格中的x1位置开始填充。如果是%10d&#xff0c;表示右对齐&#xff0c;即在x10位置对齐。 x1x2x3x4x5x6x7x8x9x10#include<stdio.h>…

android学习笔记48——SQLite

SQLite SQLite试试一个嵌入式的数据库引擎&#xff0c;专门用于资源有限的设备(如手机、PDA)上适量数据存取。 SQLite支持绝大部分SQL92语法&#xff0c;同样允许开发者使用SQL语句操作数据库中的数据&#xff0c;但SQLite并不像Oracle、MySQL数据库需要安装、启动服务进程&…

python 编辑器:Ulipad

项目地址&#xff1a;http://code.google.com/p/ulipad/ 查看大图 > 这里不是官方介绍&#xff0c;只是用户的使用感受 代码高亮&#xff0c;可以自定义修改 目录树&#xff0c;文件管理 类浏览 代码自动提示 需要 python wxpython 支持。基本的使用需求满足了吗&#xff…

关于16年2月14日以后上传AppStore出现:Missing iOS Distribution signing identity for...的问题...

2016年2月14日以后打包上传AppStore会发现出现如下的问题&#xff1a; 导致问题的原因是&#xff1a;下边这个证书过期了 以下是苹果官方给出的回应&#xff1a; Thanks for bringing this to the attention of the community and apologies for the issues you’ve been havin…

(十)反射

能够分析类能力的程序称为反射。 Class类 程序运行中&#xff0c;系统为每个对象维护一个运行时的类标识&#xff0c;该信息可以追踪对象所属的类。可以通过专门的java类访问这些信息&#xff0c;保存这些信息的类称为Class类。 获取类型标识&#xff1a; Employee e; Class c1…

李义山诗

1. 平生风义兼师友 哭刘蕡平生风义兼师友&#xff0c;不敢同君哭寝门。2. 乐游原 向晚意不适&#xff0c;驱车登古原。夕阳无限好&#xff0c;只是近黄昏&#xff1b;转载于:https://www.cnblogs.com/mtcnn/p/9422410.html