栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java三大特性之多态

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java三大特性之多态

文章目录
    • 1. 多态概述
    • 2. 多态前提和体现
    • 3. 成员访问特点
    • 4. 多态的好处
    • 5. 多态的弊端
    • 6. 多态中的转型
    • 7. 多态成员访问及转型的理解
      • 7.1 孔子装爹案例

1. 多态概述

•某一个事物,在不同时刻表现出来的不同状态。

•举例:

​ •猫可以是猫的类型。猫 m = new 猫();

​ •同时猫也是动物的一种,也可以把猫称为动物。

​ •动物 d = new 猫();

•再举一个例子:水在不同时刻的状态

​ 液态,固态,气态

2. 多态前提和体现

•发生在继承关系

•子类重写父类方法

•父类引用指向子类对象

3. 成员访问特点

成员变量

Father f = new Son();

  • 编译看左边,运行看左边

成员方法

  • 编译看左边,运行看右边

静态方法

  • 编译看左边,运行看左边

静态方法不能算方法的重写因为静态方法随着类的加载而存在

4. 多态的好处

•提高了程序的维护性(由继承保证)

•提高了程序的扩展性(由多态保证)

5. 多态的弊端

•不能访问子类特有功能

•那么我们如何才能访问子类的特有功能呢?

6. 多态中的转型

向上转型

​ •从子到父

​ Father f = new Son();//默认转换

​ •父类引用指向子类对象

向下转型

​ •从父到子

​ Son s = new (Son)f;//强制类型转换

​ •父类引用转为子类对象

7. 多态成员访问及转型的理解 7.1 孔子装爹案例
package com.wsy.polym;
//多态的问题理解:


public class PolymorphicDemo1 {
	public static void main(String[] args) {
		
		//向上转型
		孔父 k爹 = new 孔子();
		System.out.println(k爹.age);//40
		
		k爹.teach();//讲解论语
//		k爹.playGame();//这是孔子才能做得
		
		//向下转型
//		孔子 k = (孔子)孔父;//强制转换
//		System.out.println(k.age);//20
//		k.teach();//讲解论语
//		k.playGame();
	}
}

class 孔父 {
	public int age = 40;
	
	public void teach() {
		System.out.println("讲解javase");
	}
}

class 孔子 extends 孔父 {
	public int age = 20;
	
	 public void teach() {
		 System.out.println("讲解论语");
	 }
	 
	 public void playGame() {
		 System.out.println("英雄联盟");
	 }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/592561.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号