java多态

多态概念

同一个对象,在不同时刻表现出的不同形态叫做多态

多态得前提条件

  • 有继承/实现关系
  • 有方法重写
  • 有父类引用指向子类对象

有如下代码

//定义了一个动物类
public class Animal{
	public int age=40;
	public void eat(){
		sout("动物吃肉");
	} 
}
//定义了一个猫类继承动物类
public class cat extends Animal  {
	public int age=20;
	public int weight=10; 
	@override
	public void eat(){
		sout("猫吃鱼");
	} 
	public void play(){
		sout("毛线团");
	}
}
public class Demo{
	public static void main(String [] args){
		Animal a = new Cat();
		sout(a.weight); //会报错
		sout(a.age); //结果为40;
		sout(a.play());//会报错
		sout(a.eat());//输出结果为猫吃鱼
	}
}

由此可得 多态访问成员的特点为:

  • 访问成员变量时,编译通不通过看左边(父类)是否存在这个变量,运行结果也是看左边得变量值为多少。
  • 访问成员方法时,编译通过不通过看左边是否存在这个方法,但是运行结果输出的是右边(子类)方法中得结果.
  • 为什么会这样呢? 因为成员方法有重写,而成员变量没有

多态的好处和弊端

  • 多态的好处:提高了程序的扩展性,
    具体体现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作
  • 多态的弊端:不能使用子类得特有功能

多态中的转型

  • 向上转型:从子到父,父类引用指向子类对象
Animal a = new cat();  
  • 向下转型:从父到子,父类引用转为子类对象
Cat c = (Cat)a; //强制转换后赋值给c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值