A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 晚上没饭吃 中级黑马   /  2015-8-4 19:45  /  447 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多态
多态的前提

要有继承或者实现关系
要有方法重写(可以不方法重写,但是这种多态一般没有意义)
有父类引用指向子类对象
概述

对象在不同时刻表现出来的不同的状态 针对引用类型

编译期间的状态 运行期间的状态 为了提高代码的扩展性和可维护性。
            class Animal
{
String name;
int   age;
public Animal(){}
public void speak(){
    System.out.println("我是父类");}
}
class Dog extends Animal{
    String Color;
public void speak(){
    System.out.println("我是狗类");}
}
class cat extends Animal{
    String Color;
    public void speak(){
    System.out.println("我是猫类");}
}
public class AnimalTest{
    public static void main(String[] args){
        Animal a=new Dog();
        a.speak();
        Dog b=new (Dog)Animal();
        b.speak();
    }
}
多态的成员特点

成员变量

编译运行都看左边,如果运行的父类中有这个变量就不会报错,运行看左边的结果是谁

成员方法

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

多态的弊端和解决方法

父类引用不能使用子类特有的方法
解决方法父类向下转型 fu a= new (fu)zi();
类型转换异常 java.lang.ClassCastExcepton:类型转换异常。出现这个异常的原因是多态没有继承

5 个回复

倒序浏览
fu a= new (fu)zi();
这句可以?
回复 使用道具 举报
多态,还好
回复 使用道具 举报
赞一个!
回复 使用道具 举报
当duang 好   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马