zoukankan      html  css  js  c++  java
  • java三大特性--多态(1)

    1. 定义
      对象具有多种形态

    2. 类型

      • 引用的多态:

        • 父类的引用指向自身对象
        • 父类的引用指向子类对象
    TrafficTool traffictool=new TrafficTool();//父类的引用指向本身类对象
    TrafficTool traffictool1=new BMW();//父类引用指向子类对象
      • 方法的多态:

      创建本类对象时,调用的方法为本类方法。

    创建子类对象时,调用的方法为子类继承的或者重写的方法。不允许调用子类独有的方法。

    public class BMW extends TrafficTool{
        int width;
        int height;
        public void BMW(){
            System.out.println("这是子类!!");
        }
        public void drive(){
            System.out.println("宝马汽车可以开!!");
        }
        public void bmw(){
            System.out.println("这是子类独有的方法!!");
        }
    }

    这里写图片描述

    1. 多态的优势
      • 多态的出现大大的提高了程序的扩展性
    2. 表现形式

      • java中的多态的表现形式一般分为两种:overriding(重写)和overloading(重载)
      • 如果在子类中定义某方法与其父类有相同的名称和参数,我们就可以这样说此方法被子类重写overriding,子类中的对象使用这个方法的时候,将调用子类中中的定义,此时对子类来说,父类中的方法定义如同被”屏蔽”了一样。如果在一个类中定义了多个同名的方法,它们或有不同的参数或有不同的参数类型,则称为方法的重载overloading。并且overloading的方式是可以改变返回值类型的。
    3. 引用类型转换

      • 向上类型转换,即隐式/自动类型转换,是小类型转换大类型
      • 向下类型转换,即强制类型转换,是大类型转换小类型
            BMW bmw=new BMW();
            TrafficTool traffictool=bmw;//自动类型提升,向上类型转换
            BMW bmw2=(BMW)traffictool;//强制类型转换,向下类型转换
    1. 使用instanceof运算符,来解决引用对象的类型,避免类型转换的安全问题
        public static void main(String[] args) {    
            TrafficTool traffictool=new BMW();//父类引用指向子类对象
            if(traffictool instanceof BMW){//父类引用能否转换子类类型
                BMW bmw2=(BMW)traffictool;//因为父类traffictool引用指向的是子类BMW对象,所以可以强制转换
                }else{
                    System.out.println("无法进行类型转换!");
                }
            if(traffictool instanceof QQ){
                QQ qq2=(QQ)traffictool;//因为父类traffictool引用指向的是子类BMW对象,所以不可以转成子类qq2对象
            }else{
                System.out.println("无法进行类型转换,转换成QQ类型");
            }
        }
  • 相关阅读:
    注册表修改 Devenv 默认启动 Visual Studio 版本
    python——高级特性(2)
    python——高级特性
    Hibernate—部分
    Filter—过滤器和拦截器的区别
    POST—常见的4种提交方式
    POST—GET—两种提交方式的区别
    JSON—fastJSON
    协程小示例
    协程基础
  • 原文地址:https://www.cnblogs.com/tengpengfei/p/10454067.html
Copyright © 2011-2022 走看看