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

什么是多态

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

什么是多态

格式: 父类名称 对象名 = new 子类名称();


访问成员方法: 编译看左边,运行看右边

public class Fu{
    public void method(){
        System.out.println("父类多态");
    }
}
public class Zi extends Fu{
    @Override
    public void method(){
        System.out.println("子类多态");
    }
    public void  methodZi(){
        System.out.println("子类多态Zi");
    }
}
public class test{
    public static void main(String[] args){
        Fu obj = new Zi();
        obj.method();	//编译看左(等号左边),Fu里有method方法,且子类覆盖重写,所以输出“子类多态”
        obj.methodZi();	//编译看左(等号左边),Fu里没有method方法,编译报错
    }
}

多态中的向上转型: 格式:父类名称 对象名 = new 子类名称();(就是多态写法) 含义:右侧创建一个对象,把它当作父类来看待。 注意:向上转型一定是安全的。(因为从小范围转向大范围) 弊端:对象一旦向上转型为父类,那么就无法调用子类原本特有的内容。


多态中的向下转型: 格式:子类名称 对象名 = (子类名称)父类对象; 含义:将父类对象【还原】为本来的子类对象

Animal animal = new Cat(); //本来是猫,向上转型成为动物 Cat cat = (Cat) animal; //本来是猫,已经被当成动物了,还原回来成为猫 弊端:若对象创建时本来不是猫,现在非要向下转型成为猫,就会报错(ClassCastException)

public class test {
    public static void main(String[] args) {
        Animal animal = new Cat() ;
        Cat cat = (Cat) animal;	//正确
        Dog dog = (Dog) animal;	//错误
    }
}

弊端解决方案(instanceof)

public class test {
    public static void main(String[] args) {
        Animal animal = new Cat();
        animal.eat();
        if(animal instanceof Cat){
            Cat cat = (Cat) animal;
            cat.catchMouse();
        }
        if(animal instanceof Dog){
            Dog dog = (Dog) animal;
            dog.watchHouse();
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/310738.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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