多态

1.多态的定义:
多态指的是一个事物在不同时刻的体现显示出来的一种状态
例如:Animal a=new Cat();//猫是动物
Cat c=new Cat();//猫是猫
Animal a=new Dog();//狗是动物


2.多态的前提条件:
1)必须有继承关系:类与类产生关系
2)有方法重写:没有重写也可以,没有意义,因为动物的eat();猫和狗吃的东西是不一样的,所以呢,需要方法重写
3)父类的引用指向子类对象:
Fu f=new Zi();---->对内存中指向的是子类,向上转型


3.多态的成员访问特点:

成员变量:
编译看左(父类中有这个变量,不会报错,编译通过),运行看左(输出父类中成员变量的值)
成员方法:
非静态成员方法:编译看左,运行看右;因为存在方法重写
静态成员方法:(直接与类有关系,随着类的加载而加载),编译看左,运行看左
构造方法:对数进行初始化的


4.多态的好处:

1)提高代码的复用性,由继承保证
2)提高代码的扩展性:父类引用指向子类对象


5.多态的弊端:
不能访问子类中的特有功能
如何解决多态的弊端问题:
1)使用子类的功能,创建对象可以,使用子类对象调用子类中的功能,可以,但是不够好,又重新new对象,
在堆内存中消耗内存,所以不好
2)向上转型:父类的引用指向子类对象
可不可以将父类的引用转型子类对象呢?
可以:向下转型:是将父类的引用强制转换成子类对象
但是:向下转型使用不当会出现异常:运行的时候会发生一个异常:

java.lang.ClassCastException:类转换异常


代码

package 多态;
class Fu{
public void method(){
System.out.println("method fu");
}
}
class Zi extends Fu{
public void method(){
System.out.println("method zi");
}
public void show(){
System.out.println("show zi");
}
}
public class DuoTaiDemo3 {
public static void main(String[] args) {
Fu f=new Zi();
Zi z=(Zi) f;
f.method();
z.show();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值