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)可以指示多种实际类型的现象被称为多态,在运行时能够自动选择调用哪个方法的现象称为动态绑定。

  • 相关阅读:
    Servlet介绍(一)
    iOS Dev (50)用代码实现图片加圆角
    Codeforces Round #265 (Div. 2) D. Restore Cube 立方体推断
    JVM:垃圾回收机制和调优手段
    Memcachedclient-XMemcached使用
    JVM中类的卸载机制
    血型统计
    iOS 事件传递及响应过程
    java 对象参数去空格方式
    spring aop 一个挡板例子
  • 原文地址:https://www.cnblogs.com/samwang88/p/6394811.html
Copyright © 2011-2022 走看看