多态的另一表现------对象转型

  • 时间:
  • 来源:互联网

多态------向上转型

发生条件:1、实例化对象
2、具有重写方法

package NoFirst;
class Message{
    public void print(){
        System.out.println("www.mldn.cn");
    }
}
class DataBaseMessage extends Message{
    public void print(){
        System.out.println("oracle连接数据库!");
    }
}
class WebServerMessage extends Message{
    public void print (){
        System.out.println("web服务器连接");
    }
}
public class ClassUpCast {
    public static void main(String args[]){
        fun(new DataBaseMessage());  
        fun(new WebServerMessage());
    }
    public static void fun(DataBaseMessage dbm){
        msg.print();
    }
     public static void fun(WebServerMessage wsm){
        msg.print();
    }
}

以上代码在在不转型的情况下当有巨多个子类继承主类时,那么就要写巨多个重载方法来满足调用
优点:当主类产生多个子类时解决产生对象后实现传入多个参数,避免在传入多个实例传入时需多个重载方法方法的问题(实现接受参或返回参的统一性)

package NoFirst;
class Message{
    public void print(){
        System.out.println("www.mldn.cn");
    }
}
class DataBaseMessage extends Message{
    public void print(){
        System.out.println("oracle连接数据库!");
    }
}
class WebServerMessage extends Message{
    public void print (){
        System.out.println("web服务器连接");
    }
}
public class ClassUpCast {
    public static void main(String args[]){
        fun(new DataBaseMessage());   //Message msg=new DataBaseMessage;
        fun(new WebServerMessage());//Message msg=new WebServerMessage;
    }
    public static void fun(Message msg){
        msg.print();
    }
}


向上转型

必须具有向上转型的前提
特点:不安全

package NoFirst;
class Person{
    public void ordinary(){
        System.out.println("A perosn can have meals、go sleep、work.");
    }
    public String run(){
        return "I can run";
    }
}
class SuperMan extends Person{
    public String run(){
        return "I can run too!";
    }
    public String fly(){
        return "I will fly to the sky.";
    }
    public String fire(){
        return "I can beat the intelligent beings!";
    }
}
public class JavaDemo {
    public static void main(String args[]){
        Person per = new SuperMan();//向上转型
        System.out.println(per.run());
        //向上转型
        //向上转型条件:必须先存在向上转型
        SuperMan man   = (SuperMan) per;
        System.out.println(man.fire());
    }
}

intanceof

作用:判断对象是否属于一个类
语法: 对象 intanceof 类名
返回值为boolean型

if(per intanceof person)
判断正确之后再值型操作否则会出现“classcastexception”异常

haha56呵呵
发布了3 篇原创文章 · 获赞 0 · 访问量 21
私信 关注

本文链接http://element-ui.cn/news/show-912.aspx