zoukankan      html  css  js  c++  java
  • java:对象的转型

    面向对象编程有三个特征,即封装、继承和多态,学习多态必须了解向上转型和向下转型。

    一、向上转型:将子类对象赋值给父类的引用

    动物 a=new 狗();//这就为向上转型

    向上转型都会成功,是安全的。 就像说狗是动物没问题。

     语法:

    a是引用变量,指向了d对象

    class Test{
        public static void main(String args[]){
            Dog d=new Dog();    //Dog继承了Animal
            Animal a=d;            //向上转型
        }
    }

    class Test{
        public static void main(String args[]){
            Animal a=new Dog();            //向上转型
        }
    }

     父类可以用子类对象内容,但不可以直接调用子类的成员属性和成员方法

    如:jump在子类里面有,在父类没有

    class Test{
        public static void main(String args[]){
            Animal a=new Dog();            //向上转型
            a.jump();                    //这会报错
        }
    }

     父类定义了eat方法,如果子类重写了该方法,那么父类的引用将会调用子类的方法(动态连接、动态调用)

    class Test{
        public static void main(String args[]){
            Animal a=new Dog();            //向上转型
            a.eat();                    //将调用子类的
        }
    }

     总的来说:Father的对象可访问Son从Father中继承来的和Son复写Father的方法。其它的方法都不能访问。

    二、向下转型:将父类的对象赋值给子类的引用

     语法:

    向下转型的前提是首先进行向上转型(a的类型不是Dog,所以需要先向上转型为Dog)

    class Test{
        public static void main(String args[]){
            Dog d1=new Dog();
            Animal a=d1;        //a指向的对象就是一只狗
            Dog d2=(Dog)a;        //(Dog)强制类型转换  向下转型    
        }
    }

    狗是动物,那么动物是狗吗?不对,所以下面这方法是不对的

    class Test{
        public static void main(String args[]){
            Animal a=new Animal();        
            Dog d2=(Dog)a;        
        }
    }
  • 相关阅读:
    vs2017 vs2019 打开cs文件提示无法识别的GUID格式
    A股和B股票的区别?
    选股:“均线是水,K线是舟,量是马达!”的选美理念!
    什么是K线?K线的详解!
    5日均线MACD
    炒股的常见技术指标
    选股票几大原则:趋势原则,强势原则,分批原则
    金融蝴蝶效应
    股市里的大户和散户
    期货平仓/强制平仓/爆仓-股市平仓建仓
  • 原文地址:https://www.cnblogs.com/tinyphp/p/3713299.html
Copyright © 2011-2022 走看看