- super:用来调用父类的方法
放在子类的构造函数开头,调用父类构造函数 - 静态绑定:private,static,final和构造函数,overload
动态绑定:overwrite - overwrite:子类重新定义父类中的方法
- 参数列表必须完全与被重写方法的相同。
- 返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类
- 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为 public,那么在子类中重写该方法就不能声明为 protected。
- 父类的成员方法只能被它的子类重写。
- 声明为 final 的方法不能被重写。
- 声明为 static 的方法不能被重写,但是能够被再次声明。
- 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为 private 和 final 的方法。
- 子类和父类不在同一个包中,那么子类只能够重写父类的声明为 public 和 protected 的非 final 方法。
- 重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。
- 构造方法不能被重写。
- overload:重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
- 被重载的方法必须改变参数列表(参数个数或类型不一样);
- 被重载的方法可以改变返回类型;
- 被重载的方法可以改变访问修饰符;
- 被重载的方法可以声明新的或更广的检查异常;
- 方法能够在同一个类中或者在一个子类中被重载。
- 无法以返回值类型作为重载函数的区分标准。
- 异常:java中除了RuntimeException外,都是强制性异常。
- 强制性异常:所谓强制性异常就是在编写程序的过程中必需在抛出异常的部分try catch 或者向上throws异常。
- 非强制性异常:所谓非强制性异常就和上面相反了。不过你当然也可以try catch或者thows,只不过这不是强制性的。
- 抽象类:不能被实例化,有抽象方法的类必须是抽象类
- 抽象方法:有abstract的方法,在实体子类中必须实现 所有的abstract方法,如果子类是抽象的,那么可以实现或不实现父类的abstract方法
- java 所有的类都继承自object class
- equal:比较两个object是否相同
完美的equal应该具有以下6条要素- 参数类型必须是Object,取名otherObject
- if (this == otherObject) return true;
- if (otherObject == null) return false;
- if (getClass() != otherObject.getClass()) return false;
- ClassName other = (ClassName) otherObject
- return field1 == other.field1 && Objects.equals(field2, other.field2)
&& . . .;
- hashCode:
- object的默认hashcode是它的地址
- String的hashcode是从字符穿的值产生而来
- null的hashCode是0
- equal的object hashcode必须返回一样的值,反之不用
- toString:
- default toString是class名+hashCode
- equal:比较两个object是否相同
- wrapper: Integer, Long, Fload, Double, Byte等
- 类是final的,不能有子类
- 声明了一个值就不能改变
- Integer到int以及int到Integer转换的过程叫autoboxing和auto unboxing
- 编译时发生
- reflection: 主要是在运行的时候,分析一个对象,并获取其类的类名,方法,成员变量等信息,并可以创建新的对象
- 继承的一些规则:
- 不要用protected的成员变量
- 遵循is-a准则
- 父类所有的方法都适用的时候考虑继承
- overwirte不要改变方法的原始意图
- 当有以下类似代码时,考虑继承和多态:
if (x is of type 1)
action1(x);
else if (x is of type 2)
action2(x);
网友评论