被继承的类叫做超类superclass,继承超类的类叫子类subclass
父类是一对多的关系,子类是一对一的关系
class 类名 extends 父类名称
修饰符修饰的当前成员变量的访问限制和状态。public, protected,default, private, static, final
default 同包所有类都可访问
protected 同包所有的类和不同包继承它的子类(继承后子类具有父类的成员)
成员变量的覆盖: static就不会被覆盖
重写override:子类方法中,如果和所继承的方法具有相同的名称,便构成了方法的重写,覆盖。被static修饰时成员变量不能被重写。编译时bike类型,运行时racing_cycle类型。static只能有一份,是通过类调用的。
重载overload:在一个类中,存在两个或者两个以上具有相同的名称、不同参数的方法,返回值可以相同也可以不同。
重写的返回类型:返回类型为基本类型时必须相同,引用类型时可以是其派生类型
重写是基于继承的,static修饰的方法不能被重写,唯一的
父类的静态方法可以被子类的静态方法覆盖
父类的非静态方法不能被子类的静态方法覆盖
父类的静态方法不能被子类的非静态方法覆盖
覆盖是用于父类和子类之间
重写是用在同一个类中,有相同的方法名,但参数不一样。
覆盖:
覆盖的方法的参数列表必须要和被覆盖的方法的参数列表完全一致
覆盖的方法的返回值必须和被覆盖的方法的返回值一致
覆盖的方法的所抛出的异常必须和被覆盖的方法的所抛出的异常一致,或者是其子类
覆盖的方法不能为private,否则在其子类中只是定义了一个方法,并没有对其进行覆盖
重载:
使用重载时只能定义不同的参数列表
不能通过重载的方法的返回类型、访问权限和抛出的异常来进行方法的重载
重写:
重写的方法存在于父类中,也存在于子类中。
重写的方法在运行期采用多态的形式
重写的方法(子类)不能比被重写的方法(父类)有更高的访问限制。(父类应该在任何情况下替换成子类.但如果你的父类的方法是friendly,而你在子类重写的时候改成了private,请问当在别的地方人家用父类引用你的子类的方法的时候,系统应该怎么办呢?(private是不能被访问到的)这样做会给多态性的编程原则带来矛盾.反射可以动态加载类并创建其对象。换句话说,只有程序运行到某句代码,才能知道这句代码中那个对象的真实类型。如果某个类的成员在子类中的访问级别不可预料,那这种打击是相当致命的!!说得严重一点,你就不敢使用动态绑定了,多态性也就变成空谈了。)
重写的方法不能比被重写的方法有更多的异常
final修饰字修饰类时,说明其类不能有子类,也就是说该类不能被继承,该类的成员变量在这里将不起作用。
final关键字修饰方法是,说明该方法不能被重写,因为类都不能被继承了,方法就更不能重写了
类里可以含有final关键字的修饰方法
final关键字修饰的成员变量的对象引用不能被修改
final关键字修饰的类里的方法默认被修饰为final
abstract
抽象类至少有一个抽象方法
继承抽象类的子类必须实现抽象类的抽象方法
抽象类是不能被实例化的
单继承或者是多层继承
多态
一种物品有多种状态表现
static和final是在编译期绑定的,而其他方法是在运行期绑定的。动态地判断什么类型
枚举
enum colors(green, yellow)
反射机制
class c = class.forName("java.util.Date")
Metho m[] = c.getdeclaredMethos.
泛型
ArrayList<string> a = new ArrayList<string>()