`

11、多态

阅读更多

一、多态

 

    某一类事物的多种形态

 

  1. 体现:父类或者接口的引用指向或者接收自己的子类对象。。如:动物 y = new 猫
  2. 作用:多态的存在提高了程序的扩展性和后期可维护性
  3. 前提:1,需要存在继承或者实现关系 2,要有覆盖操作
  4. 弊端:虽然提高了扩展性,但是只能使用父类的引用访问父类中的成员
  5. 多态自始至终都是子类的对象在做着变化

二、特点

 

  1. 多态调用: 父类 f = new 子类();
  2. 成员函数:在多态调用时,编译看左边,运行看右边
  3. 成员变量:无论编译和运行中,都参考左边(引用型变量所属的类)
  4. 静态成员函数:无论编译和运行中,都参考左边
  5. 示例:
//多态的示例:电脑主板
interface Pci//pci接口,提高了功能扩展性
{
	public void open();
	public void close();
}
class MainBoard//主板
{
	public void run()
	{
		System.out.println("main run");
	}
	public void usePci(Pci p)//提高了程序扩展性
	{
		if(p != null)
		{
			p.open();
			p.close();
		}
	}
}
class NetCard implements Pci//网卡
{
	public void open()
	{
		System.out.println("NetCard open");
	}
	public void close()
	{
		System.out.println("NetCard close");
	}
}
class SoundCard implements Pci//声卡
{
	public void open()
	{
		System.out.println("SoundCard open");
	}
	public void close()
	{
		System.out.println("SoundCard close");
	}
}
class DuoTaiDemo
{
	public static void main(String[] args)
	{
		MainBoard mb = new MainBoard();
		mb.run();
		mb.usePci(new NetCard());
		mb.usePci(new SoundCard());
	}
}
/*运行结果是:
main run
NetCard open
NetCard close
SoundCard open
SoundCard close
*/

 

三、多态的出现思想上也做着变化

 

  1. 以前是创建对象并指挥对象做事情。
  2. 有了多态以后,我们可以找到对象的共性类型,直接操作共性类型做事情即可,这样就可以指挥一批对象做事情,即通过操作父类或接口实现。
  3. 如果想使用子类的特有方法:可以先instanceof 判断是否是指定的类,然后强转
  4. 示例:
Person p = new Student();

if(p instanceof Student)
{
	Student stu = (Student)p;
}
 
分享到:
评论

相关推荐

    day08_11多态的使用练习2

    Java基础精品课11-多态录屏5.多态调用演示.mp4

    Java基础精品课11-多态录屏5.多态调用演示.mp4

    CoreJava面试题汇总.html

    CoreJava面试题总结。 1 常用的集合有哪些?为什么这么用? 2 静态变量和成员变量的区别 3 filter过滤器用过么,一般用在什么地方?...11 多态实现的机制 12 wait sleep的区别? 13 start run区别?

    D11接口,多态.zip_d11接口_java接口_mannerglc_多态

    接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象...Java中多态的代码体现在一个子类对象(实现类对象)既可以给这个子类(实现类对象)引用变量赋值,又可以给这个子类(实现类对象)的父类(接口)变量赋值。

    类的多态练习_C++_类的多态练习_

    首先,我们要明白多态性的两种主要形式:静态多态(Static Polymorphism)和动态多态(Dynamic Polymorphism)。静态多态主要通过函数重载(Function Overloading)和运算符重载(Operator Overloading)实现,...

    c++ 文件操作多态

    C++11引入了智能指针(如`std::unique_ptr`和`std::shared_ptr`),它们能自动管理对象的生命周期,避免内存泄漏。 6. **异常处理**: - 文件操作可能会遇到错误,如文件不存在、权限问题等。因此,应在文件操作中...

    4-多态.docx

    3. 构造函数和析构函数不能声明为虚函数,但C++11引入了`= default`和`= delete`,可以间接实现类似效果。 **多继承与虚基类** 1. **多继承**:一个派生类可以同时继承多个基类,例如`class Derived : public Base1...

    第十一章继承与多态

    ### 第十一章 继承与多态 #### 1. 概述 在面向对象编程中,继承和多态是两个非常重要的概念。本章节主要介绍C++中的这两个概念及其应用。 #### 2. 基础概念 ##### 2.1 类与对象 面向对象编程的核心是类和对象的...

    java概述课件11继承和多态.ppt

    Java 继承和多态详解 本节课主要介绍 Java 语言中的继承和多态机制,帮助学生掌握继承和多态的基本概念和应用。 继承 继承是 Java 语言中的一种机制,允许开发者创建一个新的类,并继承现有类的特性。继承的目的...

    Java基础精品课11-多态录屏1.作业讲解1.mp4

    Java基础精品课11-多态录屏1.作业讲解1.mp4

    Java基础精品课11-多态录屏3.作业讲解3.mp4

    Java基础精品课11-多态录屏3.作业讲解3.mp4

    Java基础精品课11-多态录屏2.作业讲解2.mp4

    Java基础精品课11-多态录屏2.作业讲解2.mp4

    Java基础精品课11-多态录屏6.instanceof和转型.mp4

    Java基础精品课11-多态录屏6.instanceof和转型.mp4

    11-面向对象-第3天(接口多态)-讲义共6页.pdf.z

    本讲义“11-面向对象-第3天(接口多态)”深入探讨了面向对象中的两个关键特性:接口和多态。 首先,接口在面向对象编程中扮演着规范和契约的角色。接口定义了一组方法签名,但不包含任何实现。它允许不同的类遵循...

    Java基础精品课11-多态录屏4.静态方法不能被覆盖.mp4

    Java基础精品课11-多态录屏4.静态方法不能被覆盖.mp4

    类的封装、继承和多态

    第3章 类的封装、继承和多态 第4章 接口、内部类和Java API基础 第5章 异常处理 第6章 图形用户界面 第7章 多线程 第8章 Applet应用程序 第9章 输入/输出流和文件操作 第10章 网络通信 第11章 数据库应用 第12章 ...

    多态职工管理系统.rar

    此外,C++11引入了`override`关键字,用于明确表示派生类中的函数是对基类中相应虚函数的重写,增强了代码的可读性和安全性。同时,`final`关键字可以防止某个函数被进一步重写,保证了代码的稳定性和设计意图。 总...

    java多态精讲例题

    public static int j = 11; public static String m1() { return "A's static m1"; } public String m2() { return "A's instance of m2"; } } class B extends A { public int i = 2; public static int ...

    11_Java面向对象_第3天(接口、多态)_讲义

    在Java中,面向对象编程(Object-Oriented Programming,OOP)是核心概念,它包括类、对象、封装、继承和多态等关键特性。本讲义将重点讨论接口和多态两个主题。 **接口(Interface)** 接口在Java中扮演着定义...

Global site tag (gtag.js) - Google Analytics