zoukankan      html  css  js  c++  java
  • Java 继承extends、关键字super和this、多态、动态绑定

    Manager 经理  extends Employee 雇员

    "is-a"(是)关系是继承的一个明显特征。每个经理都是一名雇员。

    从术语的角度讲,Manager是子类,Employee是超类。

    子类不能够直接访问超类的私有域salary,要的话就必须使用公有接口,getSalary方法,但是这样还不行,因为子类本身也有自己的getSalary方法,这时我们希望调用的是超类的方法,就必须使用关键字super解决问题:super.getSalary();

    super也可以在构造器中应用:

    super(year,month,day);//调用超类Employee中含有year,month,day参数的构造器。

    所以super关键字有两个用途:

    1、调用超类的方法,

    2、调用超类的构造器

    在这里重温一下this关键字的两个用途:

    1、指隐式参数(this.salary 隐式参数为对象),

    2、调用该类其他构造器

      public Employee(String name,String sex,String age){

        this(year,month,day);

        this.name = name; //this.name访问实例域

        ....

      }

    ****************************************************************************

    继承后我们来创建对象:

    Manager boss = new Manager("Sam","man","20");

    boss.setBonus(5000);

    Employee[] earry = new Employee[3];

    earry[0] = boss;

    earry[1] = new Employee("Sam2","man","20","5000");

    earry[2] = new Employee("Sam3","man","20","5000");

    for(Employee e : earry){

      System.out.println( e.getSalary() );

    }

    其实这段代码是为了证明,e.getSalary()能够确定执行哪个getSalary方法,尽管这里e声明为Employee类型,实际上e既可以应用Employee类型对象,又可以引用Manager类型对象,虚拟机知道e实际引用的对象类型。

    一个对象变量(变量e)可以指示多种实际类型的现象被称为多态,在运行时能够自动选择调用哪个方法的现象称为动态绑定。

  • 相关阅读:
    idea中编译项目报错 java: javacTask: 源版本 1.8 需要目标版本 1.8
    发布返回结果对象中添加冒泡结果字段
    Spring还使用基于 JSR-250 注释,它包括 @PostConstruct, @PreDestroy 和 @Resource 注释
    跨网段IP
    Vlan
    分区工具parted的详解及常用分区使用方法
    dump命令详解
    备份 (综述)
    firewalld 防火墙配置
    find、which、whereis、locate和type之间的区别
  • 原文地址:https://www.cnblogs.com/samwang88/p/6394811.html
Copyright © 2011-2022 走看看