网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

向上转型与向下转型-创新互联

Java转型用于继承或者在接口上,实现业务场景使用。转型分为向上转型和向下转型。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名网站空间、营销软件、网站建设、张家界网站维护、网站推广。

向上转型为自动转型

向下转型需要强制转型

向上转型

向上转型是从一个较专用类型(子类),向通用类型转换(父类),所以总是安全的。因为向上的父类存放的方法都是公共方法。

父类引用子类对象

Cate obj = new Say();

向上转型后,obj可以调用子类重写父类的方法,如果子类没有重写父类的方法,才会去调用父类的公共方法,这就是动态绑定关系。但是向上转型后不能调用子类的特有方法。

向上转型可以详细看这篇

父类引用子类对象

向下转型

将原本属于父类的对象强制转换为子类,就叫做向下转型。向下转型并不是每个对象都可以的,只有这个对象原本属于子类向上转型后的成为父类的对象,才能重新向下转回变成子类。

向下转型可能会导致丢失一些属性信息,所以不推荐向下转型。除非是业务需要。

语法

// 子类类型 引用名 = (子类类型)父类引用名
Say Gt = (Say)obj;

通过向下转型后,子类对象可以调用子类的所有属性及方法。

Cate obj = new Say();    // 父类引用子类对象,属于向上转型

// 从向上转型强制转为向下
Say Gt = (Say)obj;    // 只有向下转型了,才能使用子类的所有属性及方法
 System.out.println(Gt.Name);    // 输出子类的Name;
Gt.Dt();    // 调用子类的方法

class Cate{
    String Name = "zhowHua";
    public void Met(){
        System.out.println("这是父类");
    }
}

class Say extends Cate{
    String Name = "JZ";
    public void Met(){
         System.out.println("子类重写父类的方法");
    }
    public void Dt(){
         System.out.println("子类特有的方法");
    }
}

判断对象是否属于子类

instanceof关键字

instanceof会返回一个对象是否属于某个子类的布尔值。如果是则返回true,不是返回false。

我们通过instanceof逻辑判断后,再对该对象进行强制转换,保证安全性。

PRO S = new Stud("居正", 27, 95.5);

// 通过instanceof进行判断S是否Stud的子类对象
if(S instanceof Stud){
    Stud Dt = (Stud)S;
}

通过数组对象遍历向上转型

可以将所有对象统一放进数组对象里,进行遍历

// 创建数组对象
PRO[] arr = new PRO[6];
arr[0] = new Stud("居正", 27, 95.5);
arr[1] = new Tech("陈刚", 35, 10000);
arr[2] = new Stud("小明", 25, 76.5);
arr[3] = new Tech("李莉", 43, 15000);

 for (int i = 0; i< arr.length; i++) {
    arr[i].res();    // 遍历数组调用当前数组元素的方法
 }

通过数组遍历批量完成向下转型
for (int a = 0; a< arr.length; a++) {
    if(arr[a] instanceof Stud){    // 通过instanceof对当前元素进行判断是否为某个子类
        Stud aa = (Stud)arr[a];    // 判断正确则进行向下转换。
            aa.Dt();
    }else if(arr[a] instanceof Tech){
        Tech bb = (Tech)arr[a];
            bb.Dt();
    }else{
        System.out.println("异常");
    }
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章标题:向上转型与向下转型-创新互联
本文链接:http://bjjierui.cn/article/csgehi.html

其他资讯