zoukankan      html  css  js  c++  java
  • Java基础 多态 类(class) 造型(type)

    概念

    多态:由于参数不同而导致执行效果不同的现象

    (多态变量:这个变量在运行时它所管理的那个对象的类型是会变化的)

    • Java的对象变量是多态的,它们能保存不止一种类型的对象
    • 它们可以保存的是声明类型的对象,或声明类型的子类的对象
    • 当把子类的对象赋给父类的变量的时候,就发生了向上造型

    例子

    interface Aniimal{

    void shout();

    }

    class Cat implements Animal{

    public void shout(){

    System.out.println("喵喵");

    }

    }

    class Dog implements Animal{

    public void shout(){

    System.out.println("汪汪");

    }

    }

    class Ex11{

    public static void main(String[] args){

    Animal an1=new Cat();    //创建Cat对象,使用Animal类型的变量an1的应用

    Animal an2=new Dog();    //创建Cat对象,使用Animal类型的变量an2的应用

    animalShout(an1);    //调用animalShout()方法,将an1参数传入

    animalShout(an2);    //调用animalShout()方法,将an2参数传入

    }

    //定义静态的animalShout()方法,接收一个Animal类型的参数

    public static void animalShout(Animal an){

    an.shout();

    }

    }

    类(class)的本意是类型(type),所以,定义了一个新的类就是定义了一个新的类型

    • 类定义了类型
    • 子类定义了子类型
    • 子类的对象可被当作父类的对象来使用
    •    赋值给父类的变量
    •    传递给需要父类对象的函数
    •    放进存放父类对象的容器里

    造型(cast):把一个类型对象赋给另外一个类型的变量的过程

    子类的对象可以赋值给父类的变量

    注意:Java中不存在对象对对象的赋值!

    父类的对象不能赋值给子类的变量!

     例子

    //Vechicle是Car的父类

    Vechicle v ;

    Car c = new Car() ;

    v = c ; //可以

    c = v ; //编译错误!

    可以用造型:c = ( Car )  v ;  (只有当v这个变量实际管理的是Car才行)

    造型:用括号围起类型放在值的前面

    对象本身并没有发生任何变化,所以不是"类型转换"

    运行时有机制来检查这样的转化是否合理,ClassCastException

    向上造型:拿一个子类的对象,当作父类的对象来用

    向上造型是默认的,不需要运算符,向上造型总是安全的

    String s="Hello"; 

    s=" bye " ; // 这句话的意思是,原本s是管理"Hello"的,后来s去管理另外一个叫做"bye"的对象了

    赋值运算符:让一个变量去管理另外一个对象

  • 相关阅读:
    Android_方向传感器
    Android 网络图片查看器与网页源码查看器
    SQLite数据库_实现简单的增删改查
    Android 解析JSON
    多线程
    并发编程
    幂等性
    Django缓存机制
    计算机基础
    RESTful规范
  • 原文地址:https://www.cnblogs.com/chenyuan7/p/7895672.html
Copyright © 2011-2022 走看看