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

多态/区分 对象类型转换(向上转型vs向下转型)

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

多态/区分 对象类型转换(向上转型vs向下转型)

区分

向上转换:子类到父类转换;失去子类特有的方法,向上变成父类向下转换:父类到子类转换;拥有子类特有的方法,向下变成子类 举例多好用:向上转型-多态

class Pet{
    public void eat(){}
}

class Dog extends Pet{
    @Override
    public void eat() {
        System.out.println("狗狗吃骨头");
    }
}
class Cat extends Pet{
    @Override
    public void eat() {
        System.out.println("喵喵吃鱼干");
    }
}

class Master{
    public void feed(Pet p){
        p.eat();
    }
}
public class Demo0609 {
    public static void main(String[] args) {
        Pet d = new Dog();
        Pet c = new Cat();
        Master m = new Master();
        m.feed(d);
        m.feed(c);
    }
}
举例多好用:向下转型-强制类型转换
package www.csdn.p0209;
import org.w3c.dom.Element;
import java.util.ArrayList;
import java.util.List;


interface Electronics{

}

class Thinkpad implements Electronics{
    public void boot(){
        System.out.println("using Thinkpad");
    }
}

class Mouse implements Electronics{
    public void move(){
        System.out.println("move the mouse");
    }
}

class Keyboard implements Electronics {
    public void input(){
        System.out.println("using Keyboard input");
    }
}

class ShopCart{
    
    private List mlist = new ArrayList();
    
    public void add(Electronics electronics){
        mlist.add(electronics);
    }
    
    public int getSize(){
        return mlist.size();
    }
    
    public Electronics getListItem(int position){
        return mlist.get(position);
    }
}
public class Demo0209 {
    public static void main(String[] args) {
        final int THINKPAD =0;
        final int MOUSE =1;
        final int KEYBOARD =2;
        ShopCart car = new ShopCart();
        car.add(new Thinkpad());
        car.add(new Mouse());
        car.add(new Keyboard());
        System.out.println("购物车里电子产品数:"+car.getSize());
        //取出来电脑,测试
        //向下转型,让类实例重新获得了丢失的方法
        Thinkpad thinkpad = (Thinkpad) car.getListItem(THINKPAD);
        thinkpad.boot();
        System.out.println("------------");
        //取出来鼠标,测试,略
        //取出来键盘,测试,略
    }
}

以上例子来自Java向下转型的意义
注意:“需要把多种类型的实例对象,全都扔到一个集合”

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

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

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