继承: 1 变量如果子类中出现非私有同名成员变量时, 子类要访问本类中的成员变量用 this , 子类要访问父类中的同名成员变量用 super 。 Super 的用法和 this 基本一样 This 代表本类对象的引用 Super 代表父类对象的引用。 2 子父类中的函数当子父类中出现了一模一样的函数时当子类对象调用该函数,会运行子类对象中的函数,就如同父类中的函数被覆盖了一样。这就是继承的另一个特性:重写(覆盖) 当子类继承了父类, 沿袭了父类的功能到子类中, 但子类虽具备该功能, 但功能的内容却和父类不一致时, 没有必要从新定义父类中原有的功能, 而是用 super() 语句, 并从写新的内容。覆盖: 1. 子类覆盖父类,必须保证子类的权限大于父类的权限,否则编译失败。 2. 静态只能覆盖静态。 Public static private 默认权限? 注意事项: 重载:只看参数列表; 重写:子父类的方法要一模一样。参数返回值等等。 3 子父类中的构造函数在对子类对象进行初始化时,父类构造函数也会执行。因为子类构造函数默认第一行会有一个隐式的 super ()语句 Super() 会访问父类空参数的构造函数,而且子类的每个构造函数当中的第一行都会有一个默认的 super() 语句。为什么子类一定要访问父类的构造函数呢? 因为父类中的数据, 子类可以直接获取, 所以子类对象在建立是需要先查看父类是如何对这些数据进行初始化的,所以子类对象在初始化时一定要先访问下父类当中的构造函数。如果要访问父类中指定的构造函数,可以通过手动定义 super() 语句的方式来指定注意: super() 语句一定要定义在构造函数的第一行。结论: 子类中的所有的构造函数,都会访问父类中的空参数的构造函数, 因为子类的每一个构造函数的第一行都会有一个隐式的 super() 语句。当父类中没有空参数的构造函数时,子类必须手动 super() 语句来访问父类中的构造函数。当然子类的构造函数中也可以手动指定 zhis() 语句来访问本类中的构造函数, 但子类至少会有一个构造函数来访问父类的构造函数。抽象类: 当多个类当中出现功能相同, 但功能主体不同, 这是可以向上抽取, 这时只抽取功能定义, 而不抽取功能主体。抽象类的特点: 1. 抽象方法一定在抽象类中 2. 抽象方法和抽象类都必须用 abstract 关键字进行修饰 3. 抽象类不可用 new 建立对象,因为调用抽象方法没意义 4. 抽象类中, 如果抽象方法要被使用, 必须由子类复写所有的抽象方法后, 建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。 5. 抽象类必须被继承, 抽象方法必须被重写, 抽象类不能被实例化, 抽象方法只需声明而不需要实现。模板方法模式: 在功能定义时, 功能的一部分已经确定了, 而另一部分是不确定的, 确定部分又在使用不确定部分,那么就将不确定部分暴露出去,由该类的子类去完成。接口: 初期的理解,可以认为是一个特殊的抽象类,
好程序员学习笔记 来自淘豆网m.daumloan.com转载请标明出处.