面向对象之多态

面向对象之多态

先给大家讲个笑话
在这里插入图片描述
多态的引入:
生活中的多态
在生活中我们听到“打”一声可能只是 击,敲,攻击的意思,但是其实在不同的环境下,打的意思非常多。
例如:打车,打电话,打雷,打证明,打包裹

多态的概述
生活中: 同一个动作在不同环境下表现出来的不同状态
Java中: 同一个方法在不同的对象中体现出来不同的状态
内存中: 父类引用指向子类对象

多态的实现的必要条件:(重点要记下)
1.存在继承关系
2.存在方法重写
3.父类引用指向子类对象

先给个小例子代码如下所示:

public class DuoTaiDemo01 {
   
	public static void main(String[] args) {
   
		Man m = new Doctor();
		m.cut();
		
		m = new Director();
		m.cut();
		
		m = new Hairdresser();
		m.cut();
	}
}

class Man {
   
	public void cut() {
   
		System.out.println("我是man, 我也不知道怎么cut");
	}
}

class Doctor extends Man {
   
	public void cut() {
   
		System.out.println("动手术");
	}
}

class Director extends Man {
   
	@Override
	public void cut() {
   
		System.out.println("暂停");
	}
}

class Hairdresser extends Man {
   
	@Override
	public void cut() {
   
		System.out.println("剪头发");
	}
}

多态访问成员的特点:
Father father = new Son()
左边类型 ————右边类型
成员变量:
1.编译时期看左边的类型,如果左边类型中没有变量,编译报错
2.运行时期看左边类型,左边类型的变量的值就是运行的结果
3.编译看左边,执行看左边
成员方法:
编译看左边,执行看右边
构造方法:
1.多态访问子类构造方法会先访问父类构造方法
2.帮助子类初始化父类继承过来的成员
静态方法:
编译看左边,执行看左边

举例代码如下:

public class DuoTaiDemo02 {
   
	public static void main(String[] args) {
   
		Fu fu = new Zi();
		System.out.println(fu.num); // 10
		fu.method();
		
		fu.show();
	}
}

class Fu {
   

	int num = 10;

	public void method() {
   
		System.out.println("Fu.method()");
	}
	
	public static void show() {
   
		System.out.println("Fu.show");
	}
}

class Zi extends Fu {
   

	int num = 20;

	@Override
	public void method() {
   
		System.out.println("Zi.method()");
	}
	
	public static void show() {
   
		System.out.println("Zi.show");
	}
	
}

多态的优点
1.简化了代码
2.提高了维护性和扩展性

//饲养员给不同的动物喂不同的食物
public class DuoTaiDemo03 {
   
	public static void main
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值