面向对象的特征之三:多态

简介: 1、多态性,可以理解为一个事物的多种表现形态       1> 方法的多态性:重载与重写       2>子类对象的多态性:父子类对象的转换                       ①、父类的引用指向子类对象(即向上转型),当调用方法时,实际上执行的是子类重写父类已有的方法。

1、多态性,可以理解为一个事物的多种表现形态

       1> 方法的多态性:重载与重写

       2>子类对象的多态性:父子类对象的转换

                       ①、父类的引用指向子类对象(即向上转型),当调用方法时,实际上执行的是子类重写父类已有的方法。

                           格式:父类 父类对象 = 子类实例

class Man extends Person{
	Person p1 = new Man();
	p1.eat();
	p1.walk();
}

                           ②、子类的引用指向父类对象(即向下转型),使用强转符(),父类对象变为子类对象。
                                (作用:子类扩展了父类的属性和方法,弥补向上转型时,子类特有属性、方法丢失的问题) 

                                      格式:子类 子类对象 = (子类)父类实例;

class Man extends Person{
	Person p1 = new Man();
	Man m = (Man)p1;
    m.smoking();
}

2、子类对象的多态性使用的前提:①要有类的继承②要有子类对父类方法的覆写。

3、程序运行分为编译和运行状态。

         对于多态性来说,编译时,“看左面”,将此引用变量理解为父类的类型

         运行时,“看右面”,关注真正对象的实体:子类的对象。

4、子类对象的多态性,并不适用于属性。

多态具体使用如下实例所示:

package com.hdu.java;

public class TestPeople {
	public static void main(String[] args) {
		TestPeople tp = new TestPeople();
		tp.fun(new People());
		tp.fun(new Man());
		tp.fun(new Woman());
		
	}
	public void fun(People p) {
		p.eat();
		p.sleep();
		if(p instanceof Man) {
			Man m = (Man)p;
			m.smoking();
			}else if(p instanceof Woman) {
				Woman w = (Woman)p;
				w.shopping();
			}
		
	}

}
class People{
	public void sleep() {
		System.out.println("人睡觉");
	}
	public void eat() {
		System.out.println("人吃饭");
	}
}
class Man extends People{
	public void sleep() {
		System.out.println("男人粗鲁地睡觉");
	}
	public void eat() {
		System.out.println("男人大口吃饭");
	}
	public void smoking() {
		System.out.println("男人怎能不抽烟!");
	}
}
class Woman extends People{
	public void sleep() {
		System.out.println("女人孤独地睡觉");
	}
	public void eat() {
		System.out.println("女人小心翼翼地吃饭");
	}
	public void shopping() {
		System.out.println("女人如何不购物!");
	}
}

程序运行结果:
人吃饭
人睡觉
男人大口吃饭
男人粗鲁地睡觉
男人怎能不抽烟!
女人小心翼翼地吃饭
女人孤独地睡觉
女人如何不购物!

 

 

目录
相关文章
|
6月前
|
Python 容器
面向对象详解,面向对象的三大特征:封装、继承、多态-2
面向对象详解,面向对象的三大特征:封装、继承、多态
|
6月前
|
Python
面向对象详解,面向对象的三大特征:封装、继承、多态-1
面向对象详解,面向对象的三大特征:封装、继承、多态
|
6月前
|
Java
JavaSE——面向对象高级二(1/4)-面向对象三大特征之三-多态(认识多态、使用多态的好处、多态下的类型转换问题)
JavaSE——面向对象高级二(1/4)-面向对象三大特征之三-多态(认识多态、使用多态的好处、多态下的类型转换问题)
37 0
|
7月前
|
Serverless PHP
当谈论面向对象编程时,这四个概念是非常重要的。以下是对接口、继承、封装和多态的简要说明
本文介绍了面向对象编程的四个核心概念:接口、继承、封装和多态。接口定义对象的行为规范,类通过实现接口确保符合所需行为。继承允许在已有类基础上创建新类,实现代码重用。封装是将数据和操作捆绑并隐藏内部细节,提高安全性和可维护性。多态使对象在运行时能表现出不同行为,增加代码灵活性和可扩展性。文中还提供了代码示例来说明这些概念。
47 0
|
Java
面向对象特征三:多态性
面向对象特征三:多态性
63 0
|
Java
Java面向对象 特征三(多态性)详解
Java面向对象 特征三(多态性)详解
81 0
|
存储 Java 开发者
Java面向对象编程三大特征 - 多态
Java面向对象编程三大特征 - 多态
105 0
|
Java 数据安全/隐私保护
Java面向对象编程三大特征 - 继承
Java面向对象编程三大特征 - 继承
65 0
|
存储 安全 Java
Java面向对象编程三大特征 - 封装
Java面向对象编程三大特征 - 封装
80 0
面向对象程序设计第七章:继承与派生
面向对象程序设计第七章:继承与派生
147 0
面向对象程序设计第七章:继承与派生