目录
一个对象变量(例如, 变量 e) 可以指示多种实际类型的现象被称为多态(polymorphism)。 在运行时能够自动地选择调用哪个方法的现象称为动态绑定(dynamic binding)。
如果在子类中定义了一个与超类签名相同的方 法, 那么子类中的这个方法就覆盖了超类中的这个相同签名的方法。
在覆盖一个方法的时候,子类方法不能低于超类方法的可见性。特别是, 如果超类 方法是 public, 子类方法一定要声明为 public。
有时候,可能希望阻止人们利用某个类定义子类。不允许扩展的类被称为 final 类。
1 ) 仅对本类可见 private。
2 ) 对所有类可见 public.
3 ) 对本包和所有子类可见 protected。
4 ) 对本包可见— —默认(很遗憾), 不需要修饰符。
强烈建议为自定义的每一个类增加 toString 方法。这样做不仅自己受益, 而且所 有使用这个类的程序员也会从这个日志记录支持中受益匪浅。
接口(interface) 技术,这种技术主要用来描述类具有什么功能,而并不 给出每个功能的具体实现。一个类可以实现(implement)—个或多个接口,并在需要接口的 地方,随时使用实现了相应接口的对象。 接口不是类,而是对类的一组需求描述,这些类要遵从接口描 述的统一格式进行定义。
可以为接口方法提供一个默认实现。必须用 default 修饰符标记这样一个方法。
解决默认方法冲突
Java 的相应规则要简单得多。规则如下:
1 ) 超类优先。如果超类提供了一个具体方法,同名而且有相同参数类型的默认方法会 被忽略。
2 ) 接口冲突。 如果一个超接口提供了一个默认方法,另一个接口提供了一个同名而且 参数类型(不论是否是默认参数)相同的方法, 必须覆盖这个方法来解决冲突。
......后续更新lambda表达式......
原文:https://www.cnblogs.com/zlting/p/10533404.html