• 多态


    多态

    多态可以实现java程序中的动态编译,提高可扩展性。

    多态的含义是”一种定义,多种实现“,顾名思义,就是实现多功能的目的。就像"+"号,当和数字在一起时,就代表将两个数相加,当和字符串在一起时,代表将两者相连。

    即同一方法可以根据发送对象的不同而采用多种不同的行为方式。

    一个对象的实际类型是确定的,但可以指向对象的引用类型有很多。

    多态是建立在继承的重写之上的,在子类重写父类的方法后,才会产生多态,所以只有方法有多态,属性是没有多态的。


    父类引用,指向子类的类型(向上转型)

    在初期实例化时,通过 A a = new A;的方式创建对象。这里的a只是指向 "="符号后面的这个A的对象,相当于用new产生了一个对象,给这个对象起一个名字叫a, 或者起任何名字。而反之a也可以用来命名其他的对象,所以,在A类产生一个子类 B类的时候,就可以通过父类直接指向子类 A a = new B; 这样这里原本指向A类对象的a就变为指向子类对象B了。

    这里 A a = new B; "A"是引用类型,"B"是实际类型,在new B 的时候,实际类型是确定了的,就是创建B的对象,但引用类型就不确定了,所以可以用父类a 来指向子类 B。

    显示类型转换(向下转换)

    程序能执行的方法是看左边的父类A是否存在这个方法,如果这个方法被子类B重写,就调用子类B的方法,如果只存在于子类B中,则需要((B)a).方法名; 来强行转换类型。将父类转换为子类。子类为低级,父类为高级。和基本数据类型的转换相同,在低转高的时候,可以直接转换。但高转低,需要强行转换。

    需要注意!!父类可以直接指向子类,但子类不能直接指向父类。


    父类

    package oop.Demo05;

    public class Person {

       public void run(){
           System.out.println("父类");
      }
    }

    子类

    package oop.Demo05;

    public class Student extends Person{

       @Override
       public void run() {//方法重写
           System.out.println("子类");
      }
       public void name(){
           System.out.println("zilei");
      }
    }

    测试类

    package oop;

    import oop.Demo05.Person;
    import oop.Demo05.Student;

    public class Application {
       public static void main(String[] args) {
           Person f = new Student();//父类引用指向子类
           Student s = new Student();
           Object g = new Student();//Object是所有类的父类,所以也是父类指向子类


          ((Student)f).name();//将person强行转换为Student类型。输出结果 zilei
           s.name();//输出结果 zilei
           f.run();//由于子类重写了父类的run方法。所以输出结果 子类
           s.run();//输出结果 子类
      }
    }

     

     

     

  • 相关阅读:
    httprunner学习-参数化与数据驱动
    httprunner学习4-variables变量声明与引用
    httprunner学习3-extract提取token值参数关联(上个接口返回的token,传给下个接口请求参数)
    HttpRunner基础使用一:环境安装
    yml运行时报错SSL: CERTIFICATE_VERIFY_FAILED 解决verify设置False.
    Selenium+Python日期控件小案例
    使用Navicat Keygen激活(破解)Navicat Premium 12
    robotframework(rf)中对时间操作的datetime库常用关键字
    【Selenium】不同chrome版本对应的chrome驱动版本
    1、jmeter工具&soapui工具做接口测试
  • 原文地址:https://www.cnblogs.com/jinweichaoyouqu/p/13997034.html
Copyright © 2020-2023  润新知