Java——继承、枚举

来源:互联网 发布:20m网络限速多少合适 编辑:程序博客网 时间:2024/05/21 13:54

关于继承的基本知识就不赘述了。关键字:extends,单继承,方法重写,super,this,final,子类父类,抽象类等。

继承

  • 多态
    一个对象变量可以指示多种实际类型的现象被称为多态。
    子类的每个对象也是超类的对象,因此可以将子类的对象赋给超类变量。
  • 动态绑定
    在运行时能够自动的选择调用哪个方法的现象称为动态绑定。
  • 方法调用过程
    ①编译器查看对象的声明类型和方法名。将所有重载的方法列举出来。
    ②查看调用方法时提供的参数类型。进行重载解析,如果匹配不到或者匹配到多个抛出异常。
    ③如果是private .static.final方法。编译器可以确定是哪个方法,那么这种调用就是静态绑定。如果要依赖隐式参数,那么在运行时实现动态绑定。
    ④如果是动态绑定调用。如果隐参类型刚好与子类方法匹配,直接调用,否则根据方法表搜索。
  • 完美的equals方法
public boolean equals(Object otherobj){    //是否引用同一对象    if(this==otherobj)return true;    //检测是否为null    if(otherobj==null)return false;    //是否属于同一个类,如果子类有改变用getClass,语义都统一用instanceof    if(getClass()!=otherobj.getClass()) return false;//或者 if(!(otherObj instanceof ClassName)) return false;    //转换为相应类型变量    ClassName obj=(ClassName) otherobj;    //比较==比较基本类型,用equals比较对象域    return field1==oherobj.field1    && Object.equals(filed2,oherobj.filed2)    &&.。。;}

枚举类

  • 定义

最简单的

public enum Size{SMALL,MEDIUJ,LARGE,EXTRA_LARGE};

复杂的

public enum Season {          // 枚举列表必须写在最前面         winter, spring, summer, fall;          private final static String l = "flower";                  public static Season getBest() {              if (location.equals("flower"))                  return spring;              else                  return summer;          }      }  

比较枚举类是只需要使用==就行。

  • 用途
    用户常量,或者switch中
    使用例子
//传入int值返回月份名称public enum Mon {    一月,    二月,    三月;    private static final Mon[] ENUMS = Mon.values();    public static Mon get(int i){        if (i < 1 || i > 3) {            System.out.println("超出范围");        }      return ENUMS[i-1];  }}
原创粉丝点击